【发布时间】:2015-08-11 05:10:44
【问题描述】:
我正在尝试设计一个 UITableViewController,这样当用户点击导航栏上的“搜索”按钮时,表格视图会下降,而 UIView 会从导航栏下降。然后,当用户点击 UIView 之外的任何位置时,UIView 应该缩回并且表格视图应该返回到它的原始位置。
目前,我有以下方法是“搜索”按钮的选择器。注意 - self.searchBar 是一个自定义 UIView 子类。
是否有更清洁/更好的方法来完成此任务?此外,我不确定在用户点击搜索菜单后如何摆脱视图......我猜我应该调用,[self.searchBar removeFromSuperview];但不确定将该行放在哪个委托方法中。
谢谢!
- (void)_showSearchMenu
{
CGRect frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height * .25);
frame.origin.y = CGRectGetMaxY(self.navigationController.navigationBar.frame) - frame.size.height;
self.searchBar.frame = frame;
[self.navigationController.navigationBar.superview insertSubview:self.searchBar belowSubview:self.navigationController.navigationBar];
[UIView animateWithDuration:0.5 animations:^{
CGRect frame = self.searchBar.frame;
frame.origin.y = CGRectGetMaxY(self.navigationController.navigationBar.frame);
self.searchBar.frame = frame;
self.tableView.contentOffset = CGPointMake(0, -250);
}];
}
为了更清楚,我正在尝试实现类似于此处的 HotelTonight 应用程序中看到的效果(第二个屏幕显示当您点击右上角的栏按钮时会发生什么)
【问题讨论】:
标签: ios objective-c uitableview uiview uiviewcontroller