Разочарованный с инициализацией представления в loadView

Я делаю все программно при разработке для ios, поэтому я вручную инициализирую представление контроллеров представлений в loadView для всех моих контроллеров представлений (это то, что Apple говорит). Что меня расстраивает, так это кадр viewcontrollers, изначально это {{0, 20}, {320, 460}} неправильно учтен какие-либо navbars или табуляции, которые у меня есть в моем приложении. Представление, наконец, устанавливает его надлежащий кадр в viewDidAppear, но к тому времени уже слишком поздно что-либо делать. В любом случае, чтобы распознать макет представления раньше, не вычисляя его вручную?

Это разочаровывает, потому что мне всегда приходится вручную проверять, находится ли телефон в ландшафтном или портретном режиме, для учета ротации, и если мне нужно настроить свои подпрограммы определенным образом, что я не могу сделать с авторезистированием, тогда я также должны выполнять ручные вычисления.

Есть ли какой-либо шаблон, который рекомендует Apple для этого, или он все равно должен распознать макет представления раньше, не вычисляя его вручную?

Если вы используете iOS 5, вам необходимо передать правильный фрейм в viewDidLayoutSubviews и viewWillLayoutSubviews вашего подкласса UIViewController. Здесь вы должны вычислить свой макет, и они вызывают, когда устройство вращается.

В противном случае viewWillAppear существует с iOS 2.0, и мое тестовое приложение показывает, что ему передан правильный фрейм. Он не решает вращение в середине хода, но, предположительно, вы можете просто подключиться к нему в другом месте. Вы не собираетесь настраивать свои взгляды в конце игры, но кроме игры с layoutIfNeeded из viewDidLoad (что мне не удалось в прошлом работать), я не знаю, что вы должны делать pre iOS5.

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

 [view setAutoresizingMask:UIViewAutoresizingFlexibleHeight]; 

Это то, что я обычно делаю. В противном случае я отрегулирую макет в более позднем обратном вызове – он настроен для навигационной панели viewWillAppear, не уверен, что viewDidLoad слишком рано.

  • просмотреть размер кадра контроллера в контроллере
  • Добавить навигационную панель на контроллере просмотра
  • Представляем раскадровку ViewController из другого ViewController
  • Поворот полностью Ландшафтный вид при воспроизведении фильма в VLCPlayer с быстрым 3
  • Swift - Как запретить инициализатор?
  • viewDidLoad для UIView?
  • Передача значений UIViewController в новой раскадровке - Swift
  • Как я могу полностью перезагрузить представление, чтобы viewDidLoad снова запускался?
  • новые ViewControllers, вызывающие черный экран
  • NSFetchedResultsController: выборка в фоновом потоке
  • Почему не рекомендуетсяContentSize, используемый iPhone 6 Plus Landscape?
  • Interesting Posts

    Текущие решения для предварительной загрузки, кеширования или воспроизведения другой музыки без задержки / задержки на мобильном Safari в HTML5? Возможно, iOS 5+

    Извлечение текста с помощью NSRegularExpression

    ОГРОМНОЕ изображение для показа на iPhone

    Правильно переопределить сеттер в Objective-C

    Является ли CGContextFillRect быстрее, чем CGContextFillRect?

    Найти ребра в массиве UIViews

    Создание нового объекта в Core Data: создать первый или после возврата?

    Приложение iOS Crash из-за «Не удалось загрузить NIB в комплекте»

    проект создания xcode от jenkins терпит неудачу. при построении в командной строке выполняется просто отлично. Зачем?

    Как я могу условно объявить делегат в объявлении интерфейса?

    Как получить идентификатор сообщения после успешной публикации FB ShareDialog

    Обнаруживать, когда представленный диспетчер просмотра отклонен

    presentModalViewController, обнаруживающий завершение анимации

    Как получить ibeacons различные регионы, начиная событие в одиночном didRangeBeacons: inRegion callback.

    Запуск сценария оболочки с помощью Xcode с аргументами на ios

    Давайте будем гением компьютера.