ViewControllers не изменяют размер для 3,5-дюймового экрана

Я действительно борюсь с этим. Я искал эту проблему на всем протяжении, но никто, кажется, не испытывает точно такую ​​же проблему.

Итак, у меня есть этот проект ios7, который должен работать как на 4, так и на 3,5-дюймовых устройствах. На 4 дюйма все в порядке, но на 3,5-дюймовых мониторах просмотра есть высота кадров 568

Если я регистрирую ограничения UIScreen в AppDelegate, он возвращает правильно 480. Но если я создаю UIViewController и добавлю его как rootViewController в NavigationController, его высота будет 568. (NavigationController имеет слишком высокую высоту 480)

Во-первых, я думал, что это может быть из-за XIB, поэтому я создал пустой UIViewController [[UIViewController alloc] init], но он все еще имеет высоту 568.

Это сводит меня с ума, потому что мой другой проект прекрасно работает, и viewcontrollers автоматически изменяются.

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

Только одна вещь помогла, если я превращу симулированные показатели в xib в NONE или 3,5 дюйма, но тогда я не получу полноэкранный режим на 4 дюйма. И наличие нескольких xib для обоих экранов не для меня.

Любые подсказки будут очень признательны

Спасибо

Ответ 1

Я столкнулся с этой проблемой, поскольку я использую autoLayouts, но теперь я решил эту проблему, используя nib. Поэтому я хочу поделиться им с вами.

Если вы создаете viewController через nib. Затем вы должны убедиться, что "Resize View From NIB" отмечен. После этого вы получите высоту кадра в представлении w.r.t. (в 3,5-дюймовом экране он будет 480, а в 4-дюймовом - 568).

enter image description here

Ответ 2

Это случилось со мной, за исключением того, что было наоборот: приложение работало на 4 дюйма с 3,5-дюймовым экраном.

Трюк - это ваши изображения запуска. Убедитесь, что ваше изображение R4 на самом деле соответствует 4 дюймам, а изображение @2X - 3,5 дюйма.

Ответ 3

ВЫ получите размер в неправильном времени.

Инициализированный размер от NIB, Так что вам нужно получить отрегулированный размер в -viewDidLayoutSubviews (нижняя версия в -viewDidAppear)

Ответ 4

У меня была аналогичная проблема. Оказывается, что у меня был встроенный segue и что исходный вид контейнера был жестко закодирован до 568:

Здесь

Я не уверен, что это решит вашу проблему, но что-то, на что нужно обратить внимание.