我知道没人会主动设置这个东西,但是大家一定都遇到过这个问题,下面总结下可能是哪些情况:
1, self.automaticallyAdjustsScrollViewInsets = NO; PS:iOS7里面的布局问题挺多的,使用autolayout的时候会遇到好多,大概是因为iOS7新加入autolayout还还不成熟导致的吧。 2,navigationbar设置问题 self.navigationController.navigationBar.translucent = NO; 这个属性设为no之后,tableview会在上方留出64.f的位置给navigationbar,也有小概率导致这个问题。 3,tableview section header高度设置问题 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { 4,tableview的header、footer设置问题 对于tableview,不仅每个section有header,tableview整体也有header和footer,API如下: @property (nonatomic, strong, nullable) UIView *tableHeaderView; // accessory view for above row content. default is nil. not to be confused with section header self.tableView.tableHeaderView = nil; self.tableView.tableHeaderView = [[UIView alloc] init]; self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectZero]; self.tableView.tableFooterView = nil; self.tableView.tableFooterView = [[UIView alloc] init]; self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero]; 对,你没想错,footerView也不能设置,footer和header只要设置了任意一个都会使两个地方都出现空白。不要问我为什么... 当然,如果有的时候真的只需要其中一个view的话该怎么办呢?请如下设置:(似不似傻,自己建一个view呗,非得用着恶心的东西么...) self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenSize.width, 0.0001f)]; 关于tableView顶部空白的总结基本就这些了,如果想屏蔽的话,建议把这些写在baseTableViewController里面,这样就不用每次都扣这些东西了。宏懒得粘了,都是常见的,大家应该都能看懂。navigationbar那个,因为这个东西一般不在这里设置,写在base里面不是一个好的做法。 |