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 под строкой состояния.

Я надеюсь, что подробно описал свою путаницу, мне интересно, есть ли у кого-нибудь идеи по поводу решения.

Ответы на вопрос(6)

Ваш ответ на вопрос