在Swift中显示UITextField的底部边框不使用Constraints。

时间:2016-10-17 22:57:24

标签: ios swift uitextfield constraints ios-autolayout

显示底部边框的代码仅在我不使用任何约束时才有效。一旦我这样做,底线消失了。任何原因,或解决方案都有这个问题吗?这是我目前的代码。我已经看到了很多解决方案的答案,但是当我添加约束时没有一个工作。

 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)

}

2 个答案:

答案 0 :(得分:1)

  

任何原因

当然有一个原因。约束会调整视图大小(self)。但他们调整图层大小或重新定位。所以底部边框现在位于错误的位置,可能在视图之外。您的代码取决于self.frame,但约束更改 self.frame

  当我添加约束

时,

无效

嗯,这很简单。您需要在视图中实现layoutSublayersOfLayer,并在那里布置边框图层,使其保持在您想要的位置。

答案 1 :(得分:1)

我刚刚找到了objc C的旧帖子。 您可以简单地将您的视图放在viewDidLayoutSubviews()中,一切正常。