2012-07-22 82 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