Dar*_*ong 6 iphone objective-c ios
我已经阅读过多篇帖子,但它对我来说不起作用.我正在使用最新的4.2 SDK.
我的代码是
self.tableView.contentOffset = CGPointMake(0.0, 44.0);
Run Code Online (Sandbox Code Playgroud)
这部分工作,它会将搜索栏向上移动一点点,但它不会完全隐藏.我已经尝试将值44增加到更高的值,这对以前没有任何影响!我在表的视图控制器的viewDidLoad方法中调用此代码.有没有人有任何想法?
Jak*_*lik 24
另一种方法应该是...在viewDidLoad调用中:
self.tableView.contentInset = UIEdgeInsetsMake(-self.searchDisplayController.searchBar.frame.size.height, 0, 0, 0);
Run Code Online (Sandbox Code Playgroud)
并实现endDragging委托方法:
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
CGPoint offset = self.tableView.contentOffset;
CGFloat barHeight = self.searchDisplayController.searchBar.frame.size.height;
if (offset.y <= barHeight/2.0f) {
self.tableView.contentInset = UIEdgeInsetsZero;
} else {
self.tableView.contentInset = UIEdgeInsetsMake(-barHeight, 0, 0, 0);
}
self.tableView.contentOffset = offset;
}
Run Code Online (Sandbox Code Playgroud)
设置内容是删除一些"闪烁"
如果您希望搜索栏保持在顶部,请以这种方式实现didScroll:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
CGRect sbFrame = self.searchDisplayController.searchBar.frame;
sbFrame.origin.y = self.tableView.contentOffset.y;
if (sbFrame.origin.y > 0) {
sbFrame.origin.y = 0;
}
self.searchDisplayController.searchBar.frame = sbFrame;
}
Run Code Online (Sandbox Code Playgroud)
我希望这会有所帮助(花了几天时间弄明白:))
干杯!
更新:
正如@carbonr所说,你应该在iOS7 +以后的viewDidLoad中添加这一行
self.edgesForExtendedLayout = UIRectEdgeNone;
Run Code Online (Sandbox Code Playgroud)
Dar*_*ong 14
self.tableView.contentOffset = CGPointMake(0.0, 44.0);
Run Code Online (Sandbox Code Playgroud)
上面的代码确实可以工作,但它需要在UITableView完成创建所有单元格后运行.我猜这是另一个问题.
| 归档时间: |
|
| 查看次数: |
11357 次 |
| 最近记录: |