#ios #swift #uitextfield #constraints #ios-autolayout
#iOS #swift #uitextfield #ограничения #ios-автозапуск
Вопрос:
Мой код для отображения нижней границы работает только в том случае, если я не использую никаких ограничений. Как только я это сделаю, нижняя строка исчезнет. Какие-либо причины или решение этой проблемы? Вот мой текущий код. Я видел довольно много ответов на решение, но ни один из них не работает, когда я добавляю ограничения.
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)
}
Ответ №1:
Какие-либо причины
Конечно, есть причина. Ограничения изменяют размер вашего представления ( self
). Но они не изменяют размер или не перемещают слой. Таким образом, нижняя граница теперь находится не в том месте, возможно, за пределами представления. Ваш код зависит от self.frame
, но ограничения меняются self.frame
.
при добавлении ограничений ничего не работает
Ну, это довольно просто. Вам нужно реализовать layoutSublayersOfLayer
в своем представлении и разместить там пограничный слой, чтобы он оставался там, где вы хотите.
Ответ №2:
Я только что нашел старый пост для objc C. Вы просто помещаете свои представления в viewDidLayoutSubviews(), и все работает просто отлично.