swift - 未选择大小 类 时 UITextField self.bounds 不一致
swift - UITextField self.bounds inconsistency when no size classes selected
我有一个自定义 UITextField,它向 UITextField 添加一个子层以实现颜色渐变。在我的视图控制器中,我的文本字段旨在覆盖屏幕的整个宽度。
import UIKit
import Foundation
class CustomTextField: UITextField {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
let gradientLayer = CAGradientLayer()
gradientLayer.frame = self.bounds
/* gradient color and location code */
self.layer.insertSublayer(gradientLayer, atIndex: 0)
}
}
我还禁用了尺码 类。
我的问题是,当 运行 在大于 3.5" 的模拟器上时,渐变不会正好穿过文本字段。错误似乎是 self.bounds 没有评估更大的宽度。
任何不需要启用尺寸 类 的建议?
视图边界是在 UIView.layoutSubviews()
期间计算的。
您需要覆盖此方法:
import UIKit
class CustomTextField: UITextField {
private let gradientLayer = CAGradientLayer()
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
layer.insertSublayer(gradientLayer, atIndex: 0)
}
override func layoutSubviews() {
super.layoutSubviews()
gradientLayer.frame = bounds
}
}
我有一个自定义 UITextField,它向 UITextField 添加一个子层以实现颜色渐变。在我的视图控制器中,我的文本字段旨在覆盖屏幕的整个宽度。
import UIKit
import Foundation
class CustomTextField: UITextField {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
let gradientLayer = CAGradientLayer()
gradientLayer.frame = self.bounds
/* gradient color and location code */
self.layer.insertSublayer(gradientLayer, atIndex: 0)
}
}
我还禁用了尺码 类。
我的问题是,当 运行 在大于 3.5" 的模拟器上时,渐变不会正好穿过文本字段。错误似乎是 self.bounds 没有评估更大的宽度。
任何不需要启用尺寸 类 的建议?
视图边界是在 UIView.layoutSubviews()
期间计算的。
您需要覆盖此方法:
import UIKit
class CustomTextField: UITextField {
private let gradientLayer = CAGradientLayer()
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
layer.insertSublayer(gradientLayer, atIndex: 0)
}
override func layoutSubviews() {
super.layoutSubviews()
gradientLayer.frame = bounds
}
}