Невозможно программно установить NSConstraints для просмотра.

StackOverflow https://stackoverflow.com//questions/24019963

  •  21-12-2019
  •  | 
  •  

Вопрос

Я пытаюсь сделать что-то очень простое:Создаю представление с нуля, добавляю его в представление контроллера и растягиваю его от края до края до суперпредставления, но после запуска приложения я получаю предупреждение консоли о том, что ограничения не могут быть одновременно добавлены в представление.

    backView = [UIView new];
    backView.backgroundColor = [UIColor redColor];
    [[self view] insertSubview:backView aboveSubview:tableview];
    [[self view] addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-0-[back]-0-|"
                                                                        options:0
                                                                        metrics:nil
                                                                          views:@{@"back": backView}]];

     [[self view] addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[back]-0-|"
                                                                         options:0
                                                                         metrics:nil
                                                                           views:@{@"back": backView}]];
Это было полезно?

Решение

Когда вы создаете UIView в коде это translates auto-resizing mask to constraints.

то естьон берет кадр, который вы дали ему при создании, и маску автоматического изменения размера, и преобразует их в NSLayoutConstraints.

Эти автоматически созданные ограничения конфликтуют с ограничениями, которые вы добавляете вручную.

Если я прав, то вы сможете это исправить, добавив строку...

backView.translatesAutoresizingMaskIntoConstraints = NO;

сразу после первой строки, и это должно решить проблему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top