Автомакет не действует

Я только начинаю изучать свифт, и когда я использую картографию для авторазметки видов, у меня возникает проблема. Вот что происходит.

Я создаю LoginViewController, помещаю все ограничения в функцию с именем «updateConstrains()» и вызываю функцию переопределения viewDidLoad(). Если я установлю LoginViewController в качестве окна rootViewController в AppDelegate, он будет работать хорошо.

Правильный макет

Но если я поставлю LoginViewController в качестве rootViewController UINavigationController следующим образом:

окно!.rootViewController = UINavigationController(rootViewController: loginViewController)

Стало так:

Автомакет не действует

и при печати ширины и высоты представления LoginViewController. Оказывается, что:

ширина = 155, высота = 0.

Кто-нибудь может сказать мне, что происходит?


person luosk    schedule 03.07.2016    source источник
comment
не могли бы вы вставить код для вашего Viewcontroller?   -  person Sajjon    schedule 14.07.2016


Ответы (1)


Распространенной причиной этого является забывание установить translatesAutoresizingMaskIntoConstraints = false в представлении.

Представления, созданные в коде, по умолчанию имеют для этого свойства значение true. Это создает набор ограничений автоматического макета на основе значений autoresizingMask. Если маска автоматического изменения размера определена неправильно, что часто бывает при использовании автоматического макета, то сгенерированные ограничения будут не такими, как вы предполагали.

См. документацию Apple для переводит AutoresizingMaskIntoConstraints и autoresizingMask

person Luke Van In    schedule 03.07.2016