我正在尝试围绕两个UITextField的顶部和底部边框
ViewDidLoad()
ViewDidAppear
问题是ViewDidAppear
在加载视图半秒后使边框发生变化,这对我的情况不利,
任何人都知道为什么它只围绕ViewDidLoad
方法的左角?
有什么建议值得赞赏吗?
*更新*
viewDidLayoutSubviews
与ViewDidLoad
这是我用来围绕角落的代码
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.FirstTextField.roundCorners(UIRectCorner.TopRight | UIRectCorner.TopLeft, radius: 10.0)
self.SecondTextField.roundCorners(UIRectCorner.BottomLeft | UIRectCorner.BottomRight, radius: 10.0)
答案 0 :(得分:5)
我曾经期望解决的一件事是在主队列上发送
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
如果有任何人有更好的答案请发布:)
答案 1 :(得分:1)
尝试将文本字段的舍入代码移至- (void)viewDidLayoutSubviews
答案 2 :(得分:0)
您需要将图层蒙版设置为其边界
self.layer.masksToBounds = true
编辑:
尝试使用&而不是|,我相信自从你使用或之后它只需要第一个角落。
self.FirstTextField.roundCorners(UIRectCorner.TopRight & UIRectCorner.TopLeft, radius: 10.0)
self.SecondTextField.roundCorners(UIRectCorner.BottomLeft & UIRectCorner.BottomRight, radius: 10.0)