如何在分组的UITableViewCells上设置“上”边框颜色?

时间:2011-11-29 22:05:05

标签: ios objective-c cocoa-touch uitableview

我已使用-[UITableView setSeparatorColor:]在附加图片中设置红色边框。但是如何将边框的颜色设置为白色?

enter image description here

编辑:我知道我可以使用UITableViewSeparatorStyleSingleLine样式完全摆脱白色。但我不想这样做:我想改变它的颜色。谢谢!

5 个答案:

答案 0 :(得分:5)

白色是因为分隔符样式设置为单线边缘。如果将其更改为单行,则白线将消失。不确定这是否能解决你的问题,但我认为如果不做更多工作就不会改变颜色。

答案 1 :(得分:4)

尝试为细胞制作“线条视图”。所以在cellForRowAtIndexPath:方法中只需将其添加到您需要的单元格中:

UIView *lineView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, cell.contentView.bounds.size.width, 1)] autorelease];
lineView.backgroundColor = [UIColor whiteColor];
lineView.autoresizingMask = 0x3f;
[cell.contentView addSubview:lineView];

将白线添加到每个单元格的顶部。如果您不想在第一行添加if语句:

if (indexPath.row != 0)
{
  UIView *lineView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, cell.contentView.bounds.size.width, 1)] autorelease];
  lineView.backgroundColor = [UIColor whiteColor];
  lineView.autoresizingMask = 0x3f;
  [cell.contentView addSubview:lineView];
}

希望它有所帮助。

答案 2 :(得分:2)

看看此链接是否可以为您提供帮助。

Changing border color in iPhone UITableView cells (non-grouped)

我认为它解决了你所指的同样问题。

答案 3 :(得分:1)

您正在尝试更改默认的iOS用户界面,但更改非常复杂,无法使用默认属性进行更改。

解决方案是什么?只需删除UITableVie绘制的线条(将颜色设置为[UIColor clearColor])并自定义UITableViewCell背景。

当然,你需要3种背景 - 第一个细胞,最后一个细胞和中间细胞:


- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath (NSIndexPath*)indexPath {  
    UITableViewCell* cell = [...];

    UIView* background;

    if (indexPath.row == 0) {
        background = [...]; //background for the first cell
    }
    else if (indexPath.row + 1 == [self tableView:tableView numberOfRowsInSection:indexPath.section]) {
        background = [...]; //background for the last cell
    }
    else {
        background = [...]; //background for the middle cells
    }

    cell.backgroundView = background;
}

问题是如何创建背景。通常我只使用UIImageView或几个UIImageView的组合(圆角作为一个图像,线条作为可重新映射的图像)。

答案 4 :(得分:0)

你做不到。

此内置绘图特定于分组样式的tableView,并且无法更改(据我所知......)

有一个解决方法(我们已经使用过 - >抱歉没有源代码),但我想你不会喜欢它:

1 /具有每个细胞位置的信息 2 /重新实现每个单元格背景的绘制,具体取决于它的位置(所以你必须保存这个位置: FirstCell MiddleCell LastCell ,)重现分组的tableView外观。

执行此操作的方法是CoreGraphics

从您的子类 CellGroupedBackgroundView (或 customGroupedTableViewCell ,具体取决于您选择的设计),您可以创建2个几乎相同的CAShapeLayers。每个分隔符颜色各一个。并将这些颜色公开为 CellGroupedBackgroundView 的属性。

您可以根据您设置的位置属性设置这些图层的路径(对于中间单元格仅使用CGPathAddLineToPoint,对于第一个和最后一个单元格仅使用CGPathAddArcToPoint

2 /在普通的UITableView上使用创建的自定义backgroundView,根据其indexPath设置每个单元格的“位置”......

祝你好运:)