2013-02-19 96 views
4

我想要一些左側空間,10像素到UITablViewcCell。我在下面編寫代碼,但它的水平滾動內容。我不想那樣。UITableView ContentInsets水平滾動內容

self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0.0, 0.0, 130.0, 768.0)]; 
    self.horizontalTableView.contentInset = UIEdgeInsetsMake(0.0, 10.0, 0.0, 0.0); 

我是否需要使用的tableview的contentOffsetcontentSize財產。

+0

嘗試更改框架的x位置,從0到10 .... – 2013-02-19 07:27:47

回答

0

你的描述對我來說不太清楚,所以我可能完全不在這裏。但是我會猜測,並且要求你試着澄清一下,如果它不正確。

您設置了tableView的contentInset,我猜測它的工作原理是在左側設置邊距。但我認爲它導致tableView滾動,因爲你沒有減少內部視圖的寬度。

0

似乎有UITableView中的奇怪的bug,所以邊緣插圖只適用於頂部和底部的邊緣。 最好的(但仍然難看)解決方案是轉移單元格中的內容。

contentOffset and contentSize屬性不應該在表中手動更改,這是有點內部的事情。

+0

'contentOffset和contentSize屬性不應該在表中手動更改,這是有點內部的東西。「你能告訴我爲什麼嗎?很想聽到更多關於它的信息。 – 2013-08-07 09:05:17

+0

好吧,'UITableView'是'UIScrollView'的子類,所以它也具有所有與scrollview相關的屬性,如'contentOffset'和'contentSize'。 contentSize屬性由表本身管理,所以你不需要手動修改它。其他屬性'contentOffset'更可能是隻讀的,即使對於'UIScrollView',最好不要直接修改它。 – 2013-08-07 15:37:08

3

我認爲最好的解決方案是創建子類UITableViewCell並將其子視圖的框架設置爲layoutSubviews方法以適應您的間距要求。這將是更清潔和可擴展的。 A closer look at tableview cells是一個很好的閱讀。

但也有對這個有些捷徑爲好,每一個都有自己的缺點:

  1. 設置縮進細胞

    -(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath

    這種方法將增加縮進到您的內容(左邊距)。但是細胞分離器將佔據細胞的實際寬度,即表格寬度。因此,您需要將分隔符樣式設置爲無,以便它不會顯示。但如果你需要一個細胞分離器不適用。

  2. ,當你需要細胞和的tableView之間的大幅降低整個tableViews幀大小

    這是最簡單的方式,相當明顯的,但它的跛腳。

正如你所做的那樣,設置contentInset,你應該注意到它在Docs的討論。

使用此屬性添加到內容周圍的滾動區域。單位的大小是點。默認值是UIEdgeInsetsZero。

我認爲玩contentOffset和contentSize將有助於實現邊距,但對於我而言,更改這些值從來沒有任何效果。可能正如安德烈所說,他們可能會在內部管理。但我很想聽聽更多關於這些屬性及其反映的行爲。

EDIT

contentOffset和contentSize從繼承的UIScrollView並且當它在裝置的UITableView相同的UIScrollView的子類。

1

另一種方式可以工作,是,而不是設置tableView框,您可以設置單元格的contentView框架,這樣的事情,

- (void) layoutSubviews 
{ 
    [super layoutSubviews]; 

    CGRect frame = self.contentView.frame; 
    frame.size.width = frame.size.width * 0.9; //90% of total width 
    frame.origin.x = self.center.x - (frame.size.width/2); //center the contentView 
    self.contentView.frame = frame; 
} 

的使用上面,U可以添加任何左或者右側或左側填充你需要的細胞。並且所有子視圖將被添加到contentView,因此在那裏沒有問題。

快樂編碼..!