UITableView ContentInsets水平滚动内容

时间:2013-02-19 06:29:14

标签: ios objective-c uitableview

我想要一些左侧空间,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属性。

4 个答案:

答案 0 :(得分:4)

我认为最好的解决方案是创建子类UITableViewCell并在layoutSubviews方法中设置其子视图的帧以满足您的间距要求。这将更加清洁和可扩展。 A closer look at tableview cells对此很好。

但也有一些捷径,每个都有其自身的缺点:

  1. 设置单元格的缩进

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

    此方法将为您的单元格内容添加缩进(左边距)。但是细胞分离器将占据细胞的实际宽度,即表格宽度。因此,您需要将分隔符样式设置为none,以便不会显示它。但如果您需要细胞分离器则不适用。

  2. 减少整个tableViews帧大小

    这是最简单的方法,而且非常明显,但是当你需要在单元格和tableView之间有一个边距时,它是蹩脚的。

  3. 正如您所做的那样,设置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似乎有一个奇怪的错误,所以边缘插入只适用于顶部和底部边缘。 最好(但仍然很丑陋)的解决方案是改变你单元格中的内容。

不应在表格中手动更改

contentOffsetcontentSize属性,这是内部事情。