【问题标题】:Vertical space between UITableViewCells after setting the backgroundView on a cell在单元格上设置 backgroundView 后 UITableViewCells 之间的垂直空间
【发布时间】:2012-01-12 03:06:24
【问题描述】:

我正在实现具有自定义背景并在点击时展开的 UITableViewCells。

我将自定义视图设置为我的 UITableViewCells 背景视图:(在 RowForIndexPath 中)

if (cell == nil) {
    CGRect f = CGRectMake(0.0f, 0.0f, 300.0f, 50.0f);

    cell = [[UITableViewCell alloc] initWithFrame:f reuseIdentifier:cellIdentifier];

    UIView *back = [[UIView alloc] initWithFrame:CGRectMake(10.0f, 10.0f, 300.0f, 50.0f)];
    back.layer.cornerRadius = 8.0f;
    [back setBackgroundColor:[UIColor blackColor]];

这很好用,通过设置 backgroundView 而不是 contentView,我的 backgroundView 在展开后会缩放以适应单元格的新大小(点击后更改 heightForRowAtIndexPath 中的高度)。

我现在的问题是我想在单元格之间留出几个像素的垂直空间。使用上述方法将使圆形黑色单元格“背靠背”显示。

有没有办法在单元格之间添加垂直空间,或者我可以采取完全不同的方法来获得所需的单元格外观?

提前致谢。

【问题讨论】:

标签: ios uitableview


【解决方案1】:

为了在单元格之间显示一个空格并避免您遇到的“背靠背”问题,您可以添加一个 UIView 并使用以下框架 CGRectMake(0, 0, 320, 1) 并将背景设置为标准的浅灰色单元格分隔符,或者如果您只想要一些填充,您可以使背景清晰。

我个人喜欢使用界面生成器,但您当然可以通过编程方式进行。

UIView *cellSeparator = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320 ,1)];
[cellSeparator setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin |
                                   UIViewAutoresizingFlexibleRightMargin | 
                                   UIViewAutoresizingFlexibleWidth];       
[cellSeparator setContentMode:UIViewContentModeTopLeft];    
[cellSeparator setBackgroundColor:[UIColor lightGrayColor]];
[cell addSubview:cellSeparator];
[cellSeparator release];

我将 cellSeparator 设置在单元格顶部的原因是因为效果确实适用于位于第一行和最后一行之间的单元格。此外,设置 autoresizingMask 和 contentMode 以确保在对 UITableViewCell 进行大小更改时正确调整单元格分隔符也很重要。如果单元格中有任何以x=0 y=0 开头的元素,则需要将它们向下移动到单元格分隔符的高度,可能还需要一些额外的填充像素,以便分隔符不会穿过单元格中的任何元素.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-08
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多