У меня есть следующее в IB, и в обоих представлениях включено «Использовать автоматический макет» и отключено «Изменение размеров подвидов».

Я просто пытаюсь добавить экземпляр Autolayout View в представление контейнера, чтобы его края соответствовали краям представления контейнера. Представление контейнера использует автоматическую компоновку и имеет ту же высоту, но ширина в два раза больше. Вот код:
- (IBAction)addSubviewButton:(id)sender
{
UIView *autolayoutView = [[[NSBundle mainBundle] loadNibNamed:@"AutolayoutView" owner:nil options:nil] objectAtIndex:0];
[self.containerView addSubview:autolayoutView];
[self.containerView addConstraint:
[NSLayoutConstraint constraintWithItem:autolayoutView
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:self.containerView
attribute:NSLayoutAttributeLeading
multiplier:1
constant:0]];
[self.containerView addConstraint:
[NSLayoutConstraint constraintWithItem:autolayoutView
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:self.containerView
attribute:NSLayoutAttributeTrailing
multiplier:1
constant:0]];
[self.containerView addConstraint:
[NSLayoutConstraint constraintWithItem:autolayoutView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.containerView
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:0.0]];
[self.containerView addConstraint:
[NSLayoutConstraint constraintWithItem:autolayoutView
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:self.containerView
attribute:NSLayoutAttributeBottom
multiplier:1.0 constant:0.0]];
}
Возникает ошибка:
Probably at least one of the constraints in the following list is one you don't want...
(
"<NSIBPrototypingLayoutConstraint:0x8c364d0 'IB auto generated at build time for view with fixed frame' H:[UIView:0x8c356f0(275)]>",
"<NSLayoutConstraint:0x8d43d80 H:|-(0)-[AutolayoutView:0x8d47a30] (Names: '|':UIView:0x8c356f0 )>",
"<NSLayoutConstraint:0x8d09260 AutolayoutView:0x8d47a30.trailing == UIView:0x8c356f0.trailing>",
"<NSAutoresizingMaskLayoutConstraint:0x8d0eca0 h=--& v=--& AutolayoutView:0x8d47a30.midX == + 70>"
)
Похоже, NSAutoresizingMaskLayoutConstraint автоматически создается в представлении Autolayout после его добавления в качестве подпредставления? При печати ограничений Autolayout View в didMoveToSuperview он еще не существует. Как это можно решить? Я хотел попробовать создать ограничения для Autolayout View в IB в качестве заполнителей, которые следует игнорировать во время сборки, но в IB отключены все параметры autolayout для Autolayout View.

translatesAutoresizingMaskIntoConstraintsв коде после загрузки представления. - person Ken Thomases   schedule 03.08.2014