2011-11-29 132 views

回答

2

只要看看这个链接是否可以帮助你。

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

我认为它已经解决了你指的是同样的问题。

+0

您发布的链接提及如何设置分隔符颜色,这是我已经在做的事情(这就是我在该图像中获得红色的方式)。分组表格单元具有两种边框颜色:分隔符颜色,还有别的东西。这是我试图发现的“别的东西”。 –

5

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

+0

是的,我知道这一点。但是我认为这种东西本该在iOS 5中定制,而不需要大量的黑客入侵。 –

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]; 
} 

希望它有帮助。

+0

其实我说的是每个单元底部的白线,包括弯曲的边框。所以自己画一条线不会完全割断它;我还需要绘制曲线,并在单元格后面以某种方式绘制它。 –

+0

使用神奇数字进行autoresizingMask是程序员不应该做的事情。有命名常量来做到这一点。 – Sulthan

0

你不能。

这个内置的绘图是针对分组式的tableView,并且不能改变(据我所知...)

有一个变通方法,以这个(我们使用 - >对不起没有源代码),但我想你不会喜欢它:

1 /有每个单元格的位置信息 2 /根据其位置重新绘制每个单元格的背景(所以你必须保存此位置:FirstCell,MiddleCell,LastCell)重现t他分组了tableView的样子。

办法做到这与CoreGraphics

从你的子类CellGroupedBackgroundView(或customGroupedTableViewCell,根据您选择的设计)创建2个几乎相同CAShapeLayers。每个分隔符的颜色。并且将这些颜色公开为您的CellGroupedBackgroundView的属性。

您根据您所设定的位置财产这些层的路径(只使用中间细胞CGPathAddLineToPoint,并CGPathAddArcToPoint的第一和最后一个单元格)设置

上一个普通的UITableView创建的自定义backgroundView

2 /使用,根据其indexPath设置每个单元格的'位置'...

祝你好运:)

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的组合(圆角作为一个图像,线作为可复制的图像)。