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:
Здесь
Я не уверен, что это решит вашу проблему, но что-то, на что нужно обратить внимание.