显示底部边框的代码仅在我不使用任何约束时才有效。一旦我这样做,底线消失了。任何原因,或解决方案都有这个问题吗?这是我目前的代码。我已经看到了很多解决方案的答案,但是当我添加约束时没有一个工作。
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)
}
答案 0 :(得分:1)
任何原因
当然有一个原因。约束会调整视图大小(self
)。但他们不调整图层大小或重新定位。所以底部边框现在位于错误的位置,可能在视图之外。您的代码取决于self.frame
,但约束更改 self.frame
。
当我添加约束时,无效
嗯,这很简单。您需要在视图中实现layoutSublayersOfLayer
,并在那里布置边框图层,使其保持在您想要的位置。
答案 1 :(得分:1)
我刚刚找到了objc C的旧帖子。 您可以简单地将您的视图放在viewDidLayoutSubviews()中,一切正常。