2012-07-22 78 views
1

我有一个UITableView与它的backgroundView属性设置为UIImageView显示背景图像。然后我在图像上绘制一些细胞,一切都很好。防止UITableView contentInset属性影响其backgroundView?

现在我试图在屏幕顶部显示一个栏。为了防止栏覆盖表视图的顶部行,我将其contentInset属性设置为UIEdgeInsetsMake([topBar frame].size.height, 0, 0, 0)

问题是,改变contentInset似乎也推动了背景图像视图,所以我的桌子上有一个奇怪的白色空白。 Weirder仍然,只要我滚动表视图,它自己修复。任何人有任何想法发生了什么?

如果我改变表格的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)]; 

编辑:好,移动setContentInsetviewDidLoad分成viewDidAppear:使其正常工作,除非视图显示内容插入错误,然后它捕捉一旦出现视图就会进入到位。将行移动到viewWillAppear:而不是使其行为与以前一样。猜猜viewWillAppear:viewDidAppear:之间有什么奇怪的事发生在我不知道的地方......

回答

1

你可能只是让你的表格视图变得透明,并把图片视图放在它后面。避免其他视图(您的案例中的顶部栏)的正确方法是设置框架属性。

+0

哈哈,我不知道那是怎么发生在我身上的。猜猜我会那么做。当**背景**显然不是**内容**的一部分时,我仍然对影响**背景**视图的**内容**插入属性感到愤怒。 – 2012-07-22 05:09:51