2

Я создал контроллер представления с использованием построителя интерфейса, в то время как классы размера включены.Почему UIView шире экрана

вид имеет ведущие и конечные ограничения на его супер-просмотр, который является видом контроллера представления. что-то вроде этого.

| - (14) - (просмотреть) - (14) - |

Когда я запускаю приложение, он выглядит великолепно, у представления есть те 14pt вставки с обеих сторон, хотя, когда я печатаю его ширину, я получаю 576, который шире ширины экрана. В построителе интерфейса ширина кадра представления установлена ​​равной 576 (как размер холста, когда классы размера включены), но во время выполнения ограничения должны переопределить это, я думаю.

Как выглядит вид справа, но это рама показывает большую ширину?

ответ

1

Когда вы печатали ширину?. Думаю, в ViewDidLoad. Поскольку вы используете Interface Builder и включаете классы размера, поэтому по умолчанию ширина и высота - 600x600. Когда представление времени действительно загрузилось, размер по-прежнему относится к размеру от построителя интерфейса до тех пор, пока не появится вид, он будет автоматически масштабироваться в соответствии с размером экрана. Вот почему ваш UIView шире экрана.

Вот что я напечатал из контроллера вида, построенного с помощью Interface Builder, и включил классы размера. Запуск на iPhone 6S плюс

[Размер] в целях сделали нагрузки {{0, 0}, {600, 600}}

[Размер] в целях сделали появляются {{0, 64}, {414, 623}}

0

Вы можете использовать следующие методы, чтобы обновить вид:

// Позволяет выполнить макет перед циклом рисования происходит. layoutIfНазад силы макет рано

[view setNeedsLayout];

[посмотреть компоновкуIfNeeded];

+0

Я уже делаю это –

Смежные вопросы