【问题标题】:Space between UITableView Cells [duplicate]UITableView单元格之间的空间[重复]
【发布时间】:2012-03-04 10:15:36
【问题描述】:

我有一个包含 x 个单元格的 UITableView。但是,我希望每个单元格之间有 20 px 的距离。我的 tableview 只包含一个部分。

我用谷歌搜索并搜索了论坛,但我找不到任何适合我的目的。

是否可以将内容偏移设置到单元格或单元格内的图像视图?

有人可以帮帮我吗?

【问题讨论】:

  • 单元格是由 xib 文件还是在代码中创建的?
  • 您希望它看起来如何?平均有多少个细胞?
  • 大约有 30 个单元格。我希望 row2 在 row1 下为 20px,row3 在 row2 下为 20px。赶上我的漂移?
  • 您希望在每个单元格之间看到什么?你说 tableView:heightForRowAtIndexPath: 方法没有做你想要的,所以请澄清你想要实现的外观。
  • 我有一个 uiimageview 上的 tableview,我只希望每个单元格之间有 20px,以便部分图像显示在单元格之间。所以基本上没有中间的东西,除了“空气”。

标签: iphone objective-c xcode cocoa-touch cocoa


【解决方案1】:

这个问题的另一种解决方案是像

一样实现 tableview:heightForFooterInSection 方法
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{

    return 5;
}

然后像下面这样实现 tableView:ViewForFooterInSection //实际上返回一个透明的页脚。

-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ 

    UIView *view = [[UIView alloc]init]; 
    [view setAlpha:0.0F]; 
    return view; 

}

【讨论】:

  • 我最终将它与透明页脚一起使用。 - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { UIView *view = [[[UIView alloc] init] autorelease]; [查看 setAlpha:0.0F];返回视图; }
  • @estobbart 编辑谢谢。
  • 唯一的缺点是它在部分之间增加了额外的空间,而不是在行之间。如果您确实需要将行分组到多个部分,则此解决方案不起作用。
【解决方案2】:

根据上面 cmets 中的后续,听起来您应该使用 UITableView backgroundView 属性来设置您的自定义背景图像,然后使用每个部分一个单元格的分组表格视图。对我来说,这听起来是实现您所描述的 UI 类型的最快和最简单的方法。

UITableView API 文档的相关部分:

@property(nonatomic, readwrite, retain) UIView *backgroundView
...
- (NSInteger)numberOfRowsInSection:(NSInteger)section

和 UITableViewDataSource 协议:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

【讨论】:

  • 这就是我最终所做的。谢谢大佬!
【解决方案3】:

在您的UITableViewDelegate 中,添加以下方法:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

您可以从那里独立控制每个单元格的总高度。但是,不要对大型表执行此操作,因为它会减慢速度。

【讨论】:

  • 已经试过了。这只是改变每个单元格的高度,而不是单元格之间的距离
  • 您应该创建具有您正在寻找的填充和外观的单元格布局。
  • 此方法是您描述的问题的常见做法。如果您已经尝试过,您应该在原始问题中提及它。
  • @bneely OP 很好地解释了他想要什么,“......我希望每个单元格之间有 20 px 的距离。我的表格视图只包含一个部分。”注意每个单元格之间的距离,而不是单元格高度。
  • @Javy 您必须通过设置单元格高度手动创建每个单元格之间的距离美感,然后使用单元格创建边距和填充的外观,以便您获得每个单元格之间所需的距离外观.