#ios #objective-c #storyboard #xib
#iOS #objective-c #раскадровка #xib
Вопрос:
У меня есть представление (self.printSettingsView), созданное из xib. Я добавляю это представление в качестве подвида к другому представлению (self.view). Я программно добавляю ограничения следующим образом:
[self.printSettingView setTranslatesAutoresizingMaskIntoConstraints: NO];
NSLayoutConstraint *leftConstraint = [NSLayoutConstraint constraintWithItem:self.printSettingView
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeLeading
multiplier:1.0
constant:0];
[self.view addConstraint:leftConstraint];
NSLayoutConstraint *topConstraint = [NSLayoutConstraint constraintWithItem:self.printSettingView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.topBar
attribute:NSLayoutAttributeBottom
multiplier:1.0
constant:0];
[self.view addConstraint:topConstraint];
NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:self.printSettingView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeHeight
multiplier:1.0
constant:0];
[self.view addConstraint:heightConstraint];
NSLayoutConstraint *widthConstraint = [NSLayoutConstraint constraintWithItem:self.printSettingView
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeWidth
multiplier:1.0
constant:0];
[self.view addConstraint:widthConstraint];
Все остальные ограничения вступают в силу, за исключением высоты.
Что я мог здесь делать не так???
Спасибо
Комментарии:
1. Не используйте внешние сайты для совместного использования кода, вставьте его здесь. Кроме того, было бы неплохо предоставить некоторый контекст с помощью скриншотов.
2. «Не работает» — это совершенно бесполезное выражение. Вам нужно сказать, что на самом деле сделал ваш код, и что вы ожидали, что он будет делать.
Ответ №1:
Не зная ограничений для вашего файла xib или того, что вы ожидаете, что произойдет в сравнении с тем, что происходит (скриншот был бы полезен), трудно сказать. Однако у меня есть одно предложение, в котором, возможно, логика неверна.
Второе ограничение заключается в закреплении printViewSettings сверху к нижней части верхней панели, эта часть имеет смысл. Однако следующее устанавливает высоту printViewSettings равной высоте его супервизора. Это может не соответствовать тому, что вы хотите, потому что ваш супервизор также содержит вашу верхнюю панель и поэтому может быть больше, чем вы ожидаете. На самом деле вам может понадобиться ограничение, которое вместо этого привязывает нижнюю часть printViewSettings к нижней части супервизора.
Ответ №2:
Извините, ребята, за неполную информацию. По сути, проблема заключалась в том, что я назначал ограничение для подвида в моем основном представлении, и какой бы константой ни было ограничение, размер подвида оставался постоянным. Я обнаружил, что проблема заключалась в том, что в подвиде, в свою очередь, были компоненты (подвиды) с фиксированными ограничениями по высоте. Я сделал их пропорциональными высоте родительского представления, и теперь это работает.