Swift iOS - TextField 的底部边框初始宽度错误
Swift iOS - Bottom Border on TextField initial wrong width
我实施了一个解决方案,将底部边框放在文本字段上,效果很好,但我遇到了以下问题。如果我以更大的尺寸(iPad mini、iPad Pro)或横向尺寸(iPhone6、6s)启动应用程序,则文本字段下的线条未正确拉伸。
我已经为文本字段创建了一个扩展:
extension UITextField {
/**
Customize the UITextField for App
- parameter isPasswordField: Boolean to check if this field is a password field
- author: Simon Zwicker <simon.zwicker@gmail.com>
*/
func customize(isPasswordField: Bool) {
let bottomLine = UIView()
bottomLine.frame = CGRect(x: 0.0, y: self.frame.size.height - 1, width: self.frame.size.width, height: 1.0)
bottomLine.backgroundColor = UIColor.grayColor()
self.addSubview(bottomLine)
self.tintColor = UIColor.grayColor()
if isPasswordField {
self.textColor = UIColor.blueColor()
}
}
我在 viewWillLayoutSubviews()
中的文本字段上调用了 customize()
函数
我是不是哪里弄错了?在我将设备设置为纵向并返回横向后,它就可以工作了。
文本字段的大小初始正确,但自定义函数中的 self.frame.size.width 初始太小。你知道可能发生了什么吗?
我能够重现您的问题,似乎在调用 viewWillLayoutSubviews 时,文本字段最终没有显示在屏幕上的宽度(或者未应用约束)。
在 viewDidLayoutSubviews
中调用 customize
正确缩放了行。我不确定您是否对这个解决方案感到满意。
我实施了一个解决方案,将底部边框放在文本字段上,效果很好,但我遇到了以下问题。如果我以更大的尺寸(iPad mini、iPad Pro)或横向尺寸(iPhone6、6s)启动应用程序,则文本字段下的线条未正确拉伸。
我已经为文本字段创建了一个扩展:
extension UITextField {
/**
Customize the UITextField for App
- parameter isPasswordField: Boolean to check if this field is a password field
- author: Simon Zwicker <simon.zwicker@gmail.com>
*/
func customize(isPasswordField: Bool) {
let bottomLine = UIView()
bottomLine.frame = CGRect(x: 0.0, y: self.frame.size.height - 1, width: self.frame.size.width, height: 1.0)
bottomLine.backgroundColor = UIColor.grayColor()
self.addSubview(bottomLine)
self.tintColor = UIColor.grayColor()
if isPasswordField {
self.textColor = UIColor.blueColor()
}
}
我在 viewWillLayoutSubviews()
customize()
函数
我是不是哪里弄错了?在我将设备设置为纵向并返回横向后,它就可以工作了。
文本字段的大小初始正确,但自定义函数中的 self.frame.size.width 初始太小。你知道可能发生了什么吗?
我能够重现您的问题,似乎在调用 viewWillLayoutSubviews 时,文本字段最终没有显示在屏幕上的宽度(或者未应用约束)。
在 viewDidLayoutSubviews
中调用 customize
正确缩放了行。我不确定您是否对这个解决方案感到满意。