Я новичок в разработке iOS. Я хочу построить макет без раскадровки или xib/nib. Поэтому я пытаюсь добавить ограничения программно. Я искал некоторые уроки о добавлении ограничений программно. Но представление не может отображаться правильно.Как добавить ограничение с динамической шириной программно
Я пытаюсь этот код в моем классе ViewController:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let testView = UIView()
self.view.addSubview(testView)
// Add Constraints
self.view.translatesAutoresizingMaskIntoConstraints = false
testView.translatesAutoresizingMaskIntoConstraints = false
let top = NSLayoutConstraint(item: testView, attribute: .top, relatedBy: .equal
, toItem: self.view, attribute: .top, multiplier: 1, constant: 50.0)
let bottom = NSLayoutConstraint(item: testView, attribute: .bottom, relatedBy: .equal
, toItem: self.view, attribute: .bottom, multiplier: 1, constant: -50.0)
let leading = NSLayoutConstraint(item: testView, attribute: .leading, relatedBy: .greaterThanOrEqual, toItem: self.view, attribute: .leading, multiplier: 1, constant: 50.0)
let trailing = NSLayoutConstraint(item: testView, attribute: .trailing, relatedBy: .greaterThanOrEqual, toItem: self.view, attribute: .trailing, multiplier: 1, constant: -50.0)
self.view.addConstraints([top, bottom, leading, trailing])
}
Как правило, они не должны определять размер вида или ограничений относительно ширины и высоты в учебники. Но взгляды могут быть показаны в их учебнике. В моем случае, мой testView не может показать его в приложении, даже верхний, нижний, ведущий и конечный ограничения были установлены. Я что-то пропустил? В чем проблема?
один из учебников: http://www.knowstack.com/swift-nslayoutconstraint-programatically-sample-code/
Edit: Давайте я объясню подробнее. Я хочу создать UIView
, подходящий для универсального устройства. UIView
имеет верхние, нижние, ведущие и конечные ограничения с constant: 10
. Поэтому мне не нужно устанавливать размер UIView
.
Expected Result (I am using draw tool to simulate the result)
Добро пожаловать в SO. Вы уже проверяли все похожие вопросы? Как это, например, у вас есть массовые ответы и объяснения: http://stackoverflow.com/questions/26180822/swift-adding-constraints-programmatically –
Я уже проверял этот вопрос. Размер 'UIView' был определен как ширина: 100, высота: 100 в ответе с наивысшей скоростью. Я обновил свой вопрос. Пожалуйста, проверьте, спасибо. – kk777
попробуйте добавить view.layoutIfNeeded после добавления ограничений, если ни одно из других решений не работает для вас или несколько ответов здесь. –