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 = statubar height + nav bar height)
значение y для iOS 7
?
Недавно я загрузил Xcode 5 DP, чтобы протестировать свои приложения в iOS 7. Первое, что я заметил и подтвердил, - это то, что границы моего представления не всегда меняются с учетом строки состояния и панели навигации.
В viewDidLayoutSubviews я печатаю границы представления:
{{0, 0}, {320, 568}}
В результате мой контент отображается под панелью навигации и строкой состояния.
Я знаю, что могу учесть высоту самостоятельно, получив высоту основного экрана, вычтя высоту строки состояния и высоту панели навигации, но это кажется ненужной дополнительной работой.
Кто-нибудь еще сталкивался с этой проблемой?
ОБНОВИТЬ:
Я нашел решение этой конкретной проблемы. Установите для свойства полупрозрачности панели навигации значение NO:
self.navigationController.navigationBar.translucent = NO;
Это исправит то, что представление не будет заключено в рамку под панелью навигации и строкой состояния.
Однако я не нашел исправления для случая, когда вы хотите, чтобы панель навигации была полупрозрачной. Например, просматривая фотографию в полноэкранном режиме, я хочу, чтобы панель навигации была полупрозрачной, а вид располагался под ней. Это работает, но когда я переключаю отображение / скрытие панели навигации, я получаю еще более странные результаты. Границы первого подвида (a UIScrollView
) меняются каждый раз.