我正在设计屏幕,就像使用 AutoLayout 包含少量UITextFields
一样。我想仅在UITextFields
的底部设置边框。我使用CALayer
设置了边框。但UITextField
在方法viewDidAppear
中占据其高度(在应用自动布局后),因此在UITextField
中向viewDidAppear
添加边框会使其看起来像是在闪烁。那么还有其他方法可以使用自动布局在底部将边框设置为UITextFeild
。
答案 0 :(得分:1)
class CustomTextField: UITextField {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
self.commonInit()
}
override init(frame: CGRect) {
super.init(frame: frame)
self.commonInit()
}
func commonInit() {
self.borderStyle = .none //To remove default border.
let bottomBorder = UIView()
bottomBorder.frame.size = CGSize(width: self.frame.size.width, height: 1)
bottomBorder.frame.origin = CGPoint(x: 0, y: self.frame.size.height - 1)
bottomBorder.backgroundColor = UIColor.lightGray
bottomBorder.autoresizingMask = [.flexibleWidth, .flexibleTopMargin]
self.addSubview(bottomBorder)
}
}
最后,我通过使用AutoLayout创建CustomUITextField来实现它。只需将上面的类应用于界面构建器中的UITextField即可。
答案 1 :(得分:0)
步骤 - 选择文本字段 - >显示属性检查器右侧面板并选择虚线边框样式。 接下来将uilabel拖入场景并将其设置为1.0和宽度,保持文本域的底部。所以你的问题就解决了。这可能会对你有帮助。
答案 2 :(得分:0)
如果我理解你,你要解决的问题就是在上面的方法中调用方法“绘制边框”而不是viewDidAppear
。我想它可以解决你的问题。
override func viewDidLayoutSubviews() {
//A UIViewController's overrode method
//call you method here
}
此方法在视图出现之前调用,并在子视图布局之后调用。当你正在工作 - 改变我的意思 - 层时,你应该总是使用它而不是viewDidLoad
。
希望有所帮助:)
答案 3 :(得分:0)
如果您使用模拟器进行测试。它看起来像闪烁但不是。
如果要将模拟器缩放到25%。出现1px行和 滚动导致屏幕分辨率消失时消失 小于真实的设备分辨率。
在将模拟器缩放到100%时进行测试。 CMD + 1 强>