1

У меня UITableViewController с UISearchBar в headerView. При вводе строки для поиска строки состояния отображается неправильно. Все делегаты и торговые точки находятся на своем месте.UISearchDisplayController рама не отображается с верхнего края с автоматическим расположением

enter image description here

enter image description here

UPDATE:

Временное исправление, которое лично мне не нравится, но он все еще работает (движение анимация выглядит плохо в любом случае):

- (void)resizeSeachBarBackground 
{ 
    for (UIView *view in self.searchDisplayController.searchBar.subviews) 
    { 
     if ([view respondsToSelector:@selector(subviews)]) 
     { 
      for (UIView *view2 in view.subviews) 
      { 
       if ([view2 isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) 
       { 
        id UISearchBarBackground = view2; 

        if ([UISearchBarBackground respondsToSelector:@selector(frame)]) 
        { 
         [UISearchBarBackground setFrame:CGRectMake(0, -20, CGRectGetWidth([UIScreen mainScreen].bounds), 64.0)]; 
         break; 
        } 
       } 
      } 
     } 
    } 
} 

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar 
{ 
    if (!self.navigationController.navigationBarHidden) 
     [self.navigationController setNavigationBarHidden:true animated:false]; 

    [self resizeSeachBarBackground]; 
.. 
.. 
.. 
} 
+0

Если ваше приложение поддерживает только iOS8 +, вы должны смотреть на 'UISearchController' ([WWDC2014 видео - Look Inside Представление Контроллеры @ 13:38] (https://developer.apple.com/videos/wwdc/2014/#228-video)) – Crazyrems

+0

Мое приложение поддерживает iOS 7.x и более поздние версии ... –

ответ

0

После нескольких часов попыток я удаляю предыдущий код, удаляю поиск ba r и розетки и подключаться снова и снова.

0

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

0

Собирает следующую строку в viewDidLoad, прикрепленную к нему:

self.edgesForExtendedLayout = UIRectEdgeNone; 
Смежные вопросы