我将UITableView其backgroundView属性设置为UIImageView显示背景图像。然后我在图像上绘制了一些单元格,一切都很好。
现在我试图在屏幕顶部显示一个栏。为了防止栏覆盖表格视图的顶行,我将其contentInset属性设置为UIEdgeInsetsMake([topBar frame].size.height, 0, 0, 0).
问题是,更改contentInset似乎也会将背景图像视图向下推,所以我的桌子顶部有一个奇怪的白色间隙。更奇怪的是,只要我滚动表格视图,它就会自行修复。有人知道发生了什么吗?
如果我更改表格frame而不是contentInset为顶部栏腾出空间,一切正常,但表格视图的背景图像也会向下移动,这使得视图与应用程序中的其他表格视图相比显得不一致没有顶栏。
这就是我在表格方法中设置表格背景的init方式:
_backgroundImageView = [[UIImageView alloc] initWithFrame:backgroundRect];
[_backgroundImageView setImage:...];
[_backgroundImageView setContentMode:UIViewContentModeBottom];
[self setBackgroundView:_backgroundImageView];
在视图控制器的viewDidLoad
[_tableView setContentInset:UIEdgeInsetsMake([_topBarView frame].size.height, 0, 0, 0)];
编辑:好吧,将setContentInset移出viewDidLoad移入viewDidAppear:使其正常工作,除非显示视图,内容插入错误,然后在视图出现后卡入到位。相反,将线移动到viewWillAppear:使其行为与以前一样。猜猜之间发生了一些奇怪的事情viewWillAppear:,viewDidAppear:我不知道......