Когда я делаю начальную установку UIView
«S подвидов, если я инициализацию UIView
:Где должен быть установлен код AutoLayout?
//Listing A
UIView *redBox = [[UIView alloc] init];
[redBox setBackgroundColor:[UIColor redColor]];
[self.view addSubview:redBox];
[redBox setTranslatesAutoresizingMaskIntoConstraints:NO];
И я хочу, чтобы программно применить Автокомпоновку ограничение к нему:
//Listing B
NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[redBox(100)]" options:0 metrics:nil views:@{@"redBox": redBox}];
[self.view addConstraints:constraints];
constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[redBox(100)]" options:0 metrics:nil views:@{@"redBox": redBox}];
[self.view addConstraints:constraints];
Где должен ли лист B идти?
Должно ли оно всегда следовать за листингом A?
Или, если мы в UIView
подкласса, она должна идти в:
updateConstraints
initWithFrame
илиlayoutSubviews
?
Точно так же, если мы в UIViewController
подклассу, и я помещаю Листинг А в viewDidLoad
, должны Листинг B немедленно следовать за ним или он должен идти в:
initWithNibName:bundle:
viewWillLayoutSubviews
илиupdateViewConstraints
?
Неправильно. Если ограничения, определенные вами в xib, противоречат тем, которые вы определили в 'viewDidLoad', вы получите сообщение об ошибке« Невозможно одновременно удовлетворить ограничения ». – Eric
Опять же, вы задаете вопрос или проверяете знание других? Вы, кажется, знаете лучше, чем люди, пытающиеся помочь вам. – Fogmeister
Невозможно одновременно удовлетворить ограничения ошибки ?? Я действительно не знаю этого термина, если вы знаете, тогда, пожалуйста, объясните лучше, а затем указав, что кто-то ответит отрицательно! – Retro