我想要一些左侧空间,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
属性。
答案 0 :(得分:4)
我认为最好的解决方案是创建子类UITableViewCell并在layoutSubviews
方法中设置其子视图的帧以满足您的间距要求。这将更加清洁和可扩展。 A closer look at tableview cells对此很好。
但也有一些捷径,每个都有其自身的缺点:
设置单元格的缩进
此方法将为您的单元格内容添加缩进(左边距)。但是细胞分离器将占据细胞的实际宽度,即表格宽度。因此,您需要将分隔符样式设置为none,以便不会显示它。但如果您需要细胞分离器则不适用。
减少整个tableViews帧大小
这是最简单的方法,而且非常明显,但是当你需要在单元格和tableView之间有一个边距时,它是蹩脚的。
正如您所做的那样,设置contentInset,您应该已经注意到Docs中有关它的讨论。
使用此属性添加到内容周围的滚动区域。单位是点。默认值为UIEdgeInsetsZero。
我认为使用contentOffset和contentSize会有助于获得利润,但对我来说,改变这些价值从来没有任何影响。安德烈说,他们可能会在内部进行管理。但我希望能够更多地了解这些属性及其反映的行为。
修改强>
contentOffset和contentSize继承自UIScrollView,在UITableView中与UIScrollView的子类相同。
答案 1 :(得分: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;
}
使用上面的内容,你可以添加你需要的任何左边或右边或左边的填充。并且所有子视图都将添加到contentView
,因此没有任何问题。
快乐的编码..!
答案 2 :(得分:0)
我的描述不太清楚,所以我可能完全不在这里。但是我会猜测,并且还要求你尝试澄清更多,如果它不对。
你设置tableView的contentInset,我猜它在左侧设置了一个边距。但我认为它导致tableView滚动,因为你没有减少内部视图的宽度。
答案 3 :(得分:0)
UITableView
似乎有一个奇怪的错误,所以边缘插入只适用于顶部和底部边缘。
最好(但仍然很丑陋)的解决方案是改变你单元格中的内容。
contentOffset
和contentSize
属性,这是内部事情。