猿问

UINavgationBar设置translucent属性后,影响SearchBar自动隐藏??

在页面内增加tableView和UISearchController
[self.viewaddSubview:self.tableView];
self.tableView.tableHeaderView=self.searchController.searchBar;
并对UINavgationBar设置translucent属性后
self.navigationBar.translucent=NO;
按如下设置配置searchController
-(UITableView*)tableView{
if(_tableView==nil){
_tableView=[[UITableViewalloc]initWithFrame:CGRectMake(0,0,UIScreenWidth,UIScreenHeight-44)];
}
return_tableView;
}
-(UISearchController*)searchController{
if(_searchController==nil){
_searchController=[[UISearchControlleralloc]initWithSearchResultsController:nil];
_searchController.searchResultsUpdater=self;
[_searchControllersetHidesNavigationBarDuringPresentation:YES];
[_searchControllersetDimsBackgroundDuringPresentation:YES];
[_searchController.searchBarsetFrame:CGRectMake(0,0,UIScreenWidth,44)];
}
return_searchController;
}
此时,点击searchbar,正常应该会,navbar会消失,searchbar动画上移。但实际情况是,searchbar直接移到了屏幕外面!!!!!!
删除下面这句就又正常了。
self.navigationBar.translucent=NO;
请大神搭个Demo试试,这个问题。感觉是iOS的问题啊!!!
慕后森
浏览 462回答 2
2回答

MMMHUHU

似乎发现了原因。translucent属性的设置与否,与self.view的Frame的位置相关。当translucent设为NO时,self.view的位置,从navbar下边界开始。反之亦然。

aluckdog

应该是apple自己的bug,关于navigationBar的透明度设置引起的bug有好多,目前我是选择把hidesNavigationBarDuringPresentation属性设置成NO来解决的。总比看不见的要好。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答