Intereting Posts
iOS UITableViewCell не отображается правильно, кроме индикатора раскрытия iOS Universal Links иногда перестает работать UIViewController, похоже, не полностью выпущен с ARC Альтернативы NSLog? CKFetchRecordChangesOperation возвращает исходные данные сначала Странное сбой приложения при возврате с фона Нарисовать линию графа с градиентом повторное добавление www-папки в проект xcode phonegap Что такое `copy to target` в правилах сборки в Xcode? ios searchbar может добавить изображение отмены, но не правильно Заголовочные файлы в iOS-симуляторе присутствуют, но не на устройстве iOS …? Получение ширины ячейки в сгруппированном UITableView для установки ширины заголовка раздела Делегат узнает, когда заканчивается телефонный звонок, инициированный приложением Как поместить значение ползунка в метку? UITableview не прокручивает до смещения содержимого в ViewDidLoad, когда отображается строка состояния In-Call

UIViewController неправильно отображает размер при запуске симулятора iOS7

У меня есть пользовательский UIViewController, который создает представление, содержащее панель действий вверху (вид с 4 кнопками), табличное представление, а затем другое представление под табличным представлением. Макет выполняется полностью в коде и не использует автоматическую компоновку. Все работает отлично на разных устройствах с iOS 7.0 и 7.0.2, но в симуляторе корневой вид контроллера закрепляется в верхнем правом углу экрана (0,0), а не под навигационной панелью.

Я собираюсь выставить реле в методе viewDidAppear:, но это похоже на взлома …

Спасибо за любые идеи

введите описание изображения здесь Изменить: добавлено изображение. Вы можете видеть, что UIView выделен. Как упоминалось в ManicMonkOnMac, UIView находится под панелью инструментов (но это происходит только в симуляторе, на устройстве, линии просмотра отлично). В методе loadView на контроллере я устанавливаю кадр при создании представления:

- (void)loadView { // Our parent view controller will resize us appropriately. The size set // here is a convenience for initial view layout. self.view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 320)]; self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; } 

Но этот кадр позже изменен. Однако не по моему коду, а по коду UIkit)

Edit2: добавлено тело метода loadView

EDIT: После прохождения сессии 201 из WWDC 2013, я думаю, что у меня есть решение.

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

 viewController.edgesForExtendedLayout = UIRectEdgeNone;//UIRectEdgeAll specifies that nav bars should overlap the view. 

В отличие от iOS 6, навигационные панели размещаются над представлениями в iOS 7.

Используйте размер рамки, исключающий панель навигации.

код:

CGRect frame = CGRectMake (self.view.frame.origin.x, self.view.frame.origin.y + self.navigationController.navigationBar.frame.size.height, self.view.frame.size.width, self.view .frame.size.height);

CustomView * view = [[CustomView alloc] initWithFrame: frame];

[self.view addSubview: view];