В раскадровке встроенные контроллеры представления больше не имеют того же размера, что и их представления-контейнеры.

У меня есть раскадровка с несколькими контроллерами представлений, некоторые из которых имеют представления контейнеров со встроенными контроллерами представлений. До недавнего времени встроенные контроллеры представления правильно определяли свой размер в раскадровке в зависимости от размера их представлений-контейнеров. Но теперь все они отображаются в разрешении 600 x 600 (что не соответствует размеру любого из контейнеров). Они принимают правильные размеры, когда я запускаю приложение.

Есть ли способ восстановить поведение по умолчанию в раскадровке? (И что могло быть причиной этого?) (XCode 7.2)


person user3665916    schedule 22.03.2016    source источник
comment
Могу я спросить, почему тебя это волнует? Фактический размер будет определяться во время выполнения, а позиции и размеры подпредставлений будут определяться их ограничениями. Если вы хорошо справляетесь с проектированием, вы не должны зависеть от представления, отображаемого в любом конкретном размере — это именно то, что предполагает нейтральная форма 600x600.   -  person matt    schedule 22.03.2016
comment
(1) Это приводит к множеству предупреждений компилятора о том, что размеры кадров различаются во время выполнения, маскируя реальные случаи, которые могут нас беспокоить; (2) Макеты сложны и работать с ними быстрее, если относительные размеры и положения встроенных контроллеров правильно отражены в раскадровке; (3) Это не поведение Apple по умолчанию, и я хотел бы знать, что могло его вызвать.   -  person user3665916    schedule 22.03.2016
comment
с ними быстрее работать, если относительные размеры и положения встроенных контроллеров правильно отражены в раскадровке. Ну, все, что вам нужно сделать, это переключиться на Freeform, и вы можете иметь любой размер контейнера, который вы хотите.   -  person matt    schedule 22.03.2016
comment
Все контейнеры имеют правильный размер, и все ограничения автоматического макета работают. Проблема в том, что встроенные в них контроллеры представления не соответствуют размеру их контейнеров. Встроенные контроллеры представлений (показывающиеся на стороне, связанной их переходами встраивания) должны автоматически предполагать размер контейнеров (это поведение раскадровки по умолчанию), но они внезапно перестали это делать.   -  person user3665916    schedule 22.03.2016
comment
Я это понимаю. Я не знаю, почему это произошло; если бы я это сделал, я бы ответил. Я не отвечаю. Я комментирую. И в своих комментариях я предлагаю обходные пути. Можно было бы не беспокоиться об этом. Другим может быть изменение размера контроллера представления самостоятельно, и я рассказал вам, как это сделать. Любое (или оба) из этих предложений, по крайней мере, позволят вам продолжать жить.   -  person matt    schedule 22.03.2016
comment
Спасибо, Мэтт. Если ничего не помогает, я изменю размер вручную, но я пытаюсь избежать этого, потому что тогда, если я снова изменю размер контейнеров в будущем, мне придется снова вручную изменить размер встроенных контроллеров представления... и есть их МНОГО в этом макете. Однако цените комментарии. Я просто никогда не видел, чтобы это произошло, и хотел бы понять, в чем дело.   -  person user3665916    schedule 22.03.2016
comment
Я тоже никогда не видел (и не слышал). Если переключение на другой размер, а затем обратно на Inferred не помогает, я бы посоветовал отправить отчет об ошибке в Apple. Этого не должно быть.   -  person matt    schedule 22.03.2016


Ответы (2)


В разделе Simulated Metrics инспектора размеров измените Size с Inferred на Detail:

введите здесь описание изображения

Новый:

[S[2]

person Dan Coughlin    schedule 03.04.2016

Измените атрибут ViewController/Navigation Controller в 'Simulated Metrics' from Inferred to 'Page Sheet' or 'Form Sheet', чтобы получить полноразмерную раскадровку. Это убирает эффект усадки

person Naishta    schedule 29.04.2018