ViewDidLoad 中 UITextField 的圆角仅影响左角
Rounding Corners of UITextField in ViewDidLoad only affects the left corners
我正在尝试圆化两个 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)
您需要将图层蒙版限制在其范围内
self.layer.masksToBounds = true
编辑:
尝试使用 & 而不是 |,我相信自从您使用 or 后它只走了第一个角。
self.FirstTextField.roundCorners(UIRectCorner.TopRight & UIRectCorner.TopLeft, radius: 10.0)
self.SecondTextField.roundCorners(UIRectCorner.BottomLeft & UIRectCorner.BottomRight, radius: 10.0)
尝试将文本字段四舍五入的代码移动到 - (void)viewDidLayoutSubviews
我曾期望解决这个问题的一件事是在主队列上调度
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
如果谁有更好的答案请post吧:)
我正在尝试圆化两个 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)
您需要将图层蒙版限制在其范围内
self.layer.masksToBounds = true
编辑:
尝试使用 & 而不是 |,我相信自从您使用 or 后它只走了第一个角。
self.FirstTextField.roundCorners(UIRectCorner.TopRight & UIRectCorner.TopLeft, radius: 10.0)
self.SecondTextField.roundCorners(UIRectCorner.BottomLeft & UIRectCorner.BottomRight, radius: 10.0)
尝试将文本字段四舍五入的代码移动到 - (void)viewDidLayoutSubviews
我曾期望解决这个问题的一件事是在主队列上调度
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
如果谁有更好的答案请post吧:)