[英]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單元是一個很好的解讀。
但也有一些捷徑,每個都有其自身的缺點:
設置單元格的縮進
此方法將為您的單元格內容添加縮進(左邊距)。 但是單元格分隔符將占據單元格的實際寬度,即表格寬度。 因此,您需要將分隔符樣式設置為none,以便不會顯示它。 但如果您需要細胞分離器,則不適用。
減少整個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
存在奇怪的錯誤,因此邊緣插入僅適用於頂部和底部邊緣。 最好(但仍然很丑陋)的解決方案是改變單元格中的內容。
不應在表中手動更改contentOffset
和contentSize
屬性,這是內部事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.