CGRect cgRect1 = [[UIScreen mainScreen] applicationFrame];
UISearchBar *mySearchBar = [[UISearchBar alloc]
initWithFrame:CGRectMake(0, 0, cgRect.size.width, 40)];
mySearchBar.autoresizingMask =
UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight ;
UITableView *myTableView = [[UITableView alloc]
initWithFrame:CGRectMake(0, 40, cgRect.size.width, cgRect.size.height-40)];
myTableView.autoresizingMask =
UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
[self.view addSubview:mySearchBar];
[self.view addSubview:myTableView];
В более ранних версиях он работает правильно. Строка поиска отображается ниже statusbar
и панели навигации. tableview
появляется под панелью поиска
Но когда я запускаю это на Xcode 5 sdk iOS 7
, строка поиска не видна (я думаю, что она помещена под панель состояния и панель навигации), а также панель навигации появляется над табличным представлением.
Будет ли он исправлен с iOS 7
стабильным выпуском?
Или это проблема моего кодирования?
Или мы должны обрабатывать его, добавляя значение y (y = statubar height + nav bar height)
для iOS 7
?
Недавно я загрузил Xcode 5 DP для тестирования своих приложений в iOS 7. Первое, что я заметил и подтвердил, - это то, что мои ограничения обзора не всегда изменяются для учета строки состояния и панели навигации.
В viewDidLayoutSubviews я печатаю границы представления:
{{0, 0}, {320, 568}}
В результате мой контент появляется под панелью навигации и строкой состояния.
Я знаю, что сам мог учитывать высоту, получая высоту основного экрана, вычитая высоту строки состояния и высоту навигационной панели, но это кажется ненужной дополнительной работой.
Кто-нибудь еще испытал эту проблему?
UPDATE:
Я нашел решение для этой конкретной проблемы. Установите прозрачное свойство навигационной панели в положение NO:
self.navigationController.navigationBar.translucent = NO;
Это позволит зафиксировать представление под рамкой под панелью навигации и панель состояния.
Однако я не нашел исправления для случая, когда вы хотите, чтобы панель навигации была полупрозрачной. Например, просматривая полноэкранный режим фото, я хочу, чтобы прозрачная панель навигации была прозрачной, а вид под ней был обрамлен. Это работает, но когда я переключаю отображение/скрытие навигационной панели, я испытал еще более странные результаты. Первое подзадача (a UIScrollView
) получает свои границы y, которое происходило с каждым изменением.