在 Swift 中显示不使用约束的 UITextField 的底部边框。
Show bottom border of UITextField in Swift not working with Constraints.
我的显示底部边框的代码只有在我不使用任何约束的情况下才有效。一旦我这样做,底线就消失了。这个问题有什么原因或解决办法吗?这是我当前的代码。我已经看到了很多解决方案的答案,但是 none 在我添加约束时有效。
func useUnderline() {
var bottomLine = CALayer()
bottomLine.frame = CGRect(x: 0.0, y: self.frame.height - 1, width: self.frame.width, height: 1)
bottomLine.backgroundColor = UIColor.white.cgColor
self.borderStyle = UITextBorderStyle.none
self.layer.addSublayer(bottomLine)
}
Any reasons
当然是有原因的。约束会调整您的视图大小 (self
)。但他们不会调整图层大小或重新定位图层。所以底部边框现在在错误的位置,可能在视图之外。您的代码取决于 self.frame
,但约束 更改 self.frame
.
none are working when I add constraints
好吧,这很简单。您需要在您的视图中实现 layoutSublayersOfLayer
,并在那里布置边框层,使其保持在您想要的位置。
我刚刚为 objc C 找到了一个旧的 post。
您只需将您的视图放在 viewDidLayoutSubviews() 中,一切正常。
我的显示底部边框的代码只有在我不使用任何约束的情况下才有效。一旦我这样做,底线就消失了。这个问题有什么原因或解决办法吗?这是我当前的代码。我已经看到了很多解决方案的答案,但是 none 在我添加约束时有效。
func useUnderline() {
var bottomLine = CALayer()
bottomLine.frame = CGRect(x: 0.0, y: self.frame.height - 1, width: self.frame.width, height: 1)
bottomLine.backgroundColor = UIColor.white.cgColor
self.borderStyle = UITextBorderStyle.none
self.layer.addSublayer(bottomLine)
}
Any reasons
当然是有原因的。约束会调整您的视图大小 (self
)。但他们不会调整图层大小或重新定位图层。所以底部边框现在在错误的位置,可能在视图之外。您的代码取决于 self.frame
,但约束 更改 self.frame
.
none are working when I add constraints
好吧,这很简单。您需要在您的视图中实现 layoutSublayersOfLayer
,并在那里布置边框层,使其保持在您想要的位置。
我刚刚为 objc C 找到了一个旧的 post。 您只需将您的视图放在 viewDidLayoutSubviews() 中,一切正常。