У меня есть UIView
- назовите его HomeView
, который содержит UITableView
и UISearchBar
. То есть, они являются подпунктами. Они добавляются в viewDidLoad
для HomeView
. Картинка стоит тысячи слов:Скользящий поиск Бар вниз и одновременное изменение размера Вид на сиблинг
Как видно из этих скриншотов, то первый элемент в UITableView
скрыт когда отображается UISearchBar
. Вот соответствующий код:
- (void) viewDidLoad
self.table_view = [UITableView.alloc.initWithFrame: self.view.bounds style:UITableViewStylePlain];
self.table_view.bounds.origin.y += 44;
self.table_view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
// ^^^ This is the code I believe is one source of my problem
// Triggered when search button in nav bar is pressed
// code to calculate delta here
// Here's how the view is animated. The search bar frame
// is dropped down (works), and ideally, the tableview
// drops down exactly the same amount at the same time.
// If the action is to hide, then the inverse happens
// because +delta+ will have been calculated as a
// negative number above.
[UIView animateWithDuration: 0.7
delay: 0.0
options: UIViewAnimationOptionCurveEaseIn
animations:^ {
self.searchBar.frame = CGRectOffset(@searchBar.frame, 0.0, delta);
}
completion:^(BOOL finished){
self.searchBarVisible = !self.searchBarVisible
self.searchBar.hidden = !self.searchBarVisible
edgeInsets = UIEdgeInsetsMake(0.0f, self.searchBarVisible ? delta : 0.0f, 0.0f, 0.0f)
[tableView setContentInset: edgeInsets]
}
];
Что происходит на самом деле является то, что панель поиска скользит вниз, как ожидается, в ответ на кнопки поиска нажмите и затем скользит вверх на следующей кнопки. Однако представление таблицы никогда не настраивается.
Проблема, насколько я могу судить, заключается в том, что в viewDidLoad
прилагаемый HomeView
не был визуализирован, поэтому размер пока неизвестен. Я могу получить размеры экрана и использовать его, но я думал, что маска для автоматического изменения размера лучше подходит, не так ли?
Есть ли очевидные недостатки в этом, и есть ли способ заставить табличный вид анимировать вниз в то же самое время, когда панель поиска?
Thanks
Ненавижу быть этим парнем, но почему бы не просто использовать tableViewController? Сделав это, следуя [этому фрагменту кода примера яблока] (http://developer.apple.com/library/ios/#samplecode/TableSearch/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007848), это намного проще, чем вручную изменять размеры просмотров. – erran