Невозможно программно установить NSConstraints для просмотра.
-
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;
сразу после первой строки, и это должно решить проблему.