前提:UINavigationController的navigationBar的透明度不为1
在UINavigationController下的UITableView可能会出现偏移,这是UITableViewWrapperView在作怪。
第一种方法(不一定管用):
前提:tableview
的style
改成plain
在控制器里添加如下代码:
self.navigationController.automaticallyAdjustsScrollViewInsets = NO;
// 将navigationBar的透明度改为1
self.navigationController.navigationBar.translucent = YES;
第二种方法(很土但有效):
前提:tableview
的style
改成plain
1、tableview
不是显示在控制器的最上方就会出现这种问题。tableview
必须显示在控制器的最上方,所以在最后添加[self.view addSubview:self.tableView]
2、若你有控件必须显示在tableview
的上方(如悬浮按钮之类的),可以在
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
// 添加tableview
[self.view addSubview:self.tableView];
}
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
// 添加显示在tableview上方的控件
}
3、若果你是UINavigationController下的tabbar下创建的控制器中的tableView,你需要在tabbar的item切换代理方法中再次添加一下tableView,其他控件异步延迟一点时间,再在主线程中添加。
网友评论