我有一个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:
之间发生了一些奇怪的事情......
答案 0 :(得分:1)
您可能只是让表格视图透明并在其后面放置图像视图。避免其他视图(在您的情况下为顶部栏)的正确方法是设置框架属性。