activConstraints: и deactivateConstraints: не сохраняются после поворота для ограничений, созданных в IB

НовыйNSLayoutConstraint методыactivateConstraints: а такжеdeactivateConstraints: похоже, не работают правильно с созданными IB ограничениями (они работают правильно для созданных кодом ограничений). Я создал простое тестовое приложение с одной кнопкой, которое имеет два набора ограничений. Один набор, который установлен, имеет ограничения centerX и centerY, а другой набор, который удален, имеет ограничения сверху и слева (константа 10). Метод button переключает эти наборы ограничений. Вот код,

@interface ViewController ()
@property (strong, nonatomic) IBOutletCollection(NSLayoutConstraint) NSArray *uninstalledConstraints;
@property (strong, nonatomic) IBOutletCollection(NSLayoutConstraint) NSArray *installedConstraints;
@end

@implementation ViewController


- (IBAction)switchconstraints:(UIButton *)sender {
    [NSLayoutConstraint deactivateConstraints:self.installedConstraints];
    [NSLayoutConstraint activateConstraints:self.uninstalledConstraints];
}


-(void)viewWillLayoutSubviews {
    NSLog(@"installed: %@    uninstalled: %@", ((NSLayoutConstraint *)self.installedConstraints[0]).active ? @"Active" : @"Inactive", ((NSLayoutConstraint *)self.uninstalledConstraints[0]).active ? @"Active" : @"Inactive");

}

Когда приложение запускается, кнопка находится в правильном, центрированном положении, определяемом установленными ограничениями. После того, как я выполняю активацию / инактивацию в методе действия кнопки, кнопка перемещается в ее новое положение правильно, но когда я поворачиваю вид в альбомную ориентацию, она возвращается в свое первоначально определенное положение (хотя журнал все еще показывает вновь активированный набор как будучи активным). Когда я поворачиваюсь назад к портрету, кнопка остается в своем первоначальном положении (по центру на экране), и теперь журнал показывает, что начальный набор ограничений активен, а те, что я активировал, как неактивны.

Вопрос в том, является ли это ошибкой, или эти методы не должны работать таким образом с ограничениями, определенными IB?

Ответы на вопрос(3)

Ваш ответ на вопрос