我已使用-[UITableView setSeparatorColor:]
在附加图像中设置红色边框。但是,如何将边框的颜色设置为白色?如何在分组的UITableViewCells上设置“上”边框颜色?
编辑:我知道我可以使用UITableViewSeparatorStyleSingleLine
风格完全删除白色的。但我不想这样做:我想改变它的颜色。谢谢!
我已使用-[UITableView setSeparatorColor:]
在附加图像中设置红色边框。但是,如何将边框的颜色设置为白色?如何在分组的UITableViewCells上设置“上”边框颜色?
编辑:我知道我可以使用UITableViewSeparatorStyleSingleLine
风格完全删除白色的。但我不想这样做:我想改变它的颜色。谢谢!
只要看看这个链接是否可以帮助你。
Changing border color in iPhone UITableView cells (non-grouped)
我认为它已经解决了你指的是同样的问题。
白色是因为分隔符样式设置为单线边缘。如果将其更改为单线,白线将消失。不知道这是否能解决您的问题,但我认为如果不做更多的工作,就不会改变颜色。
是的,我知道这一点。但是我认为这种东西本该在iOS 5中定制,而不需要大量的黑客入侵。 –
尝试为单元格制作“线视图”。所以在的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];
}
希望它有帮助。
其实我说的是每个单元底部的白线,包括弯曲的边框。所以自己画一条线不会完全割断它;我还需要绘制曲线,并在单元格后面以某种方式绘制它。 –
使用神奇数字进行autoresizingMask是程序员不应该做的事情。有命名常量来做到这一点。 – Sulthan
你不能。
这个内置的绘图是针对分组式的tableView,并且不能改变(据我所知...)
有一个变通方法,以这个(我们使用 - >对不起没有源代码),但我想你不会喜欢它:
1 /有每个单元格的位置信息 2 /根据其位置重新绘制每个单元格的背景(所以你必须保存此位置:FirstCell,MiddleCell,LastCell)重现t他分组了tableView的样子。
办法做到这与CoreGraphics
:
从你的子类CellGroupedBackgroundView(或customGroupedTableViewCell,根据您选择的设计)创建2个几乎相同CAShapeLayers。每个分隔符的颜色。并且将这些颜色公开为您的CellGroupedBackgroundView的属性。
您根据您所设定的位置财产这些层的路径(只使用中间细胞CGPathAddLineToPoint
,并CGPathAddArcToPoint
的第一和最后一个单元格)设置
2 /使用,根据其indexPath设置每个单元格的'位置'...
祝你好运:)
您试图更改默认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的组合(圆角作为一个图像,线作为可复制的图像)。
您发布的链接提及如何设置分隔符颜色,这是我已经在做的事情(这就是我在该图像中获得红色的方式)。分组表格单元具有两种边框颜色:分隔符颜色,还有别的东西。这是我试图发现的“别的东西”。 –