У меня есть пользовательский UIViewController, созданный из nib-файла со следующей иерархией представлений:
... где на левой стороне оранжевая область представляет собой «представление заголовка»с двумя UIB-кнопками и UILabel в центре, а синяя область представляет собой UITableView;все под одним UIView.
Во время выполнения это будет выглядеть более или менее, как показано ниже:
На этом этапе всякий раз, когда пользователь будет нажимать напанель поиска, я бы ожидал скрыть как панель навигации, так и вид заголовка с панелью поиска, перемещенной в верхнюю часть окна.
Однако это не так, поскольку панель навигации автоматически выйдет из окна ивид заголовка переместится наверх, но все равно останется на сцене;остальные останутся на своих местах.
На этом этапе мне пришлось добавить следующий код, чтобы переместить представление заголовка из окна:
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.2];
CGRect frame = self.headerView.frame;
frame.origin.y -= frame.size.height;
self.headerView.frame = frame;
[UIView commitAnimations];
}
, что приведет к:
... Как вы, возможно, уже заметили, заголовок будет нормально перемещаться, но строка поиска будет придерживаться своей исходной позиции.
Я пыталсяизмените положение как self.view
, так и по таблице поиска, но не повезло.
Что мне делать?Спасибо.