Ios ViewDidLoad中UITextField的圆角仅影响左角
我试图绕过两个UITextField的上下边界Ios ViewDidLoad中UITextField的圆角仅影响左角,ios,swift,autolayout,uitextfield,viewdidload,Ios,Swift,Autolayout,Uitextfield,Viewdidload,我试图绕过两个UITextField的上下边界 ViewDidLoad()中的结果 viewDid中的结果出现 问题是viewdideappear在加载视图半秒后更改边框,这在我的情况下并不好 有人知道为什么在viewdiload方法中它只在左角四舍五入吗 有什么建议吗 *更新* viewdilayoutsubviews与viewdiload 这是我用来绕道而行的代码 extension UITextField { func roundCorners(corners:UIRectCo
ViewDidLoad()中的结果
viewDid中的结果出现
问题是viewdideappear
在加载视图半秒后更改边框,这在我的情况下并不好
有人知道为什么在viewdiload
方法中它只在左角四舍五入吗
有什么建议吗
*更新*
viewdilayoutsubviews
与viewdiload
这是我用来绕道而行的代码
extension UITextField {
func roundCorners(corners:UIRectCorner, radius: CGFloat) {
let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let mask = CAShapeLayer()
mask.path = path.CGPath
self.layer.masksToBounds = true
self.layer.mask = mask
}
}
及
您需要将层遮罩设置为其边界
self.layer.masksToBounds=true
编辑:
试着使用&而不是|,我相信这只是你使用或之后的第一个拐角
self.FirstTextField.roundCorners(UIRectCorner.TopRight & UIRectCorner.TopLeft, radius: 10.0)
self.SecondTextField.roundCorners(UIRectCorner.BottomLeft & UIRectCorner.BottomRight, radius: 10.0)
尝试将文本字段四舍五入的代码移动到-(void)viewdilayoutsubviews
我曾经期望解决的一件事是在主队列上分派
dispatch_async(dispatch_get_main_queue(),{
self.FirstTextField.roundCorners(UIRectCorner.TopRight | UIRectCorner.TopLeft, radius: 10.0)
self.SecondTextField.roundCorners(UIRectCorner.BottomLeft | UIRectCorner.BottomRight, radius: 10.0)
});
现在我不知道这是否是低效的,但是的,它是有效的:D
如果有人有更好的答案,请发布:)您是如何使用AutoLayout设置脚本中的文本字段的?您是否正确设置了约束条件?这是最有可能的问题约束都没问题我也这么想,但我发现问题出在四舍五入corners@Aladin查看更新名称结果,如viewdiload
查看更新问题唯一的区别是viewdilayoutsubviews
在@aladin将设备旋转一次时工作正常,您的意思是viewdillayoutsubviews
@AladinViewControllers只有viewWillLayoutSubviews
你是认真的,但不幸的是与ViewDidLoad
和viewDidLayoutSubviews
@AladinYou的想法与我的想法相同:),我以前尝试过,但它根本没有绕过任何角落:):天啊,我没有主意了,对不起!我也被困在这里无法理解,这让我大吃一惊,但没问题,我希望任何人能尽快帮助我,谢谢你的帮助:)@DavidLook我有一个主意,效果很好,检查我的回答如果你需要从主线程以外的地方更新UI(例如下载图像),这实际上是你应该做的。你以前在哪里调用过这个方法?我是在正常情况下调用它的,我也必须这样做,在viewwillbeen
中进行更改没有做任何事情,而在viewdidebeen
中加载界面后,看着一个图像形成一个圆圈是非常俗气的。谢谢你的解决方案。
dispatch_async(dispatch_get_main_queue(),{
self.FirstTextField.roundCorners(UIRectCorner.TopRight | UIRectCorner.TopLeft, radius: 10.0)
self.SecondTextField.roundCorners(UIRectCorner.BottomLeft | UIRectCorner.BottomRight, radius: 10.0)
});