我将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:
我不知道......