UISearchBar перекрывает строку состояния в iOS
Я (как и все остальные) сталкиваюсь с той же проблемой перекрытия строки состояния, что и все остальные, с небольшим поворотом, и именно поэтому я открываю новый вопрос по этому поводу.
Кажется, есть некоторый механизм, который позволяет UISearchBar знать, где его позиционировать самостоятельно, чтополностью не в порядке.
джарединклер ответ здесь (Строка состояния iOS 7 возвращается к стилю iOS 6 по умолчанию в приложении iPhone?), очень подробно объясняет, как инженеры Apple позволяют нам вводить логику в наше приложение, чтобы максимально вписаться в среду пользователя.
Я прошел процесс тщательного изучения каждого UIViewController в моем приложении и внесения малейших возможных изменений.
В большинстве случаев мне удалось решить проблему, используя код, который я нашел в нескольких ответах SO
// Do any additional setup after loading the view.
if ([self respondsToSelector:@selector(edgesForExtendedLayout)]){
self.edgesForExtendedLayout = UIRectEdgeNone;
}
Это, однако, не будет работать независимо от того, что я делаю в конкретном представлении, где скрыта панель UINavigationBar.
Основываясь на решении, найденном в SO, я смог решить эту проблему, добавив следующую логику в этот конкретный UIViewController
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
viewFrame.origin.y = viewFrame.origin.y+statusBarFrame.size.height;
}
Это подталкивает UIViewControllern пикселей вниз "в зависимости" от высоты строки состояния.
Эффект этого шоу здесь
Проблема в том, что когда я вхожу в поле поиска, UISearchBar добавляет 20-пиксельный отступ сверху, который смещает весь пользовательский интерфейс.
Это приводит меня к выводу, что UISearchBar пытается настроить себя, и по совпадению он корректирует себя точно так же, как высота строки состояния.
Если я не взламываю позицию, когда я вхожу в поле поиска, эта автоматическая настройка выравнивает UISearchBar под строкой состояния.
Я надеюсь, что подробно описал свою путаницу, мне интересно, есть ли у кого-нибудь идеи по поводу решения.