簡體   English   中英

UITableView ContentInsets水平滾動內容

[英]UITableView ContentInsets scrolling content horizontally

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

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的contentOffset contentSize屬性。

我認為最好的解決方案是創建子類UITableViewCell並在layoutSubviews方法中設置其子視圖的框架以滿足您的間距要求。 這將更加清潔和可擴展。 仔細觀察tableview單元是一個很好的解讀。

但也有一些捷徑,每個都有其自身的缺點:

  1. 設置單元格的縮進

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

    此方法將為您的單元格內容添加縮進(左邊距)。 但是單元格分隔符將占據單元格的實際寬度,即表格寬度。 因此,您需要將分隔符樣式設置為none,以便不會顯示它。 但如果您需要細胞分離器,則不適用。

  2. 減少整個tableViews的幀大小

    這是最簡單的方法,而且非常明顯,但是當你需要在cellView和tableView之間有一個邊距時它很蹩腳。

正如您所做的那樣,設置contentInset,您應該已經注意到Docs中有關它的討論。

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

我認為使用contentOffset和contentSize有助於實現利潤,但對我來說,改變價值從來沒有任何影響。 安德烈說,他們可能會在內部進行管理。 但我希望能夠更多地了解這些屬性及其反映的行為。

編輯

contentOffset和contentSize繼承自UIScrollView,在UITableView中與UIScrollView的子類相同。

另一種可行的方法是,不是設置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;
}

使用上面的,你可以添加你需要的任何左,右或左填充單元格。 並且所有子視圖都將添加到contentView ,因此沒有任何問題。

快樂的編碼..!

你的描述對我來說不是很清楚,所以我可能完全不在這里。 但是我會猜測,並且還要求你嘗試澄清更多,如果它不對。

你設置tableView的contentInset,我猜它在左側設置了一個邊距。 但我認為它導致tableView滾動,因為你沒有減少內部視圖的寬度。

似乎UITableView存在奇怪的錯誤,因此邊緣插入僅適用於頂部和底部邊緣。 最好(但仍然很丑陋)的解決方案是改變單元格中的內容。

不應在表中手動更改contentOffsetcontentSize屬性,這是內部事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM