IBOutlet не работал с ограничениями жесткого кода

У меня есть новая проблема, связанная с миром Auto-Layout, я могу подвести итог проблемы в следующих шагах:

1- У меня есть раскадровка только с одной сценой, содержащей UIImageView.

2- Я пошел в файл viewcontroller.m и добавил ручные ограничения, как показано ниже:

[self.bgImageView setTranslatesAutoresizingMaskIntoConstraints:NO];


NSLayoutConstraint *horizentalSpaceConstraint = [NSLayoutConstraint constraintWithItem:self.bgImageView
                                                                         attribute:NSLayoutAttributeTrailing
                                                                         relatedBy:NSLayoutRelationEqual
                                                                            toItem:self.view
                                                                         attribute:NSLayoutAttributeBottom
                                                                        multiplier:1.0
                                                                          constant:0.0]; 
[self.view addConstraint:horizentalSpaceConstraint];

Результат:

Ограничение не повлияло на IBoutlet для UIImageView, но если я добавлю UIImageView из жестко запрограммированного файла viewcontroller.m, это сработает, вы можете помочь мне обнаружить эту проблему.

1 ответ

Я нашел решение, которое можно описать с помощью (Каждые ограничения, используемые элементами IBOutlet, должны перед началом добавить только следующую строку без необходимости [setTranslatesAutoresizingMaskIntoConstraints:No]

-(void)viewWillAppear:(BOOL)animated{

    // Step 1 remove view constraints for IBOutlet elements  

    [self.view removeConstraints:self.view.constraints];
}
Другие вопросы по тегам