我已使用-[UITableView setSeparatorColor:]
在附加图片中设置红色边框。但是如何将边框的颜色设置为白色?
编辑:我知道我可以使用UITableViewSeparatorStyleSingleLine
样式完全摆脱白色。但我不想这样做:我想改变它的颜色。谢谢!
答案 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)
答案 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设置每个单元格的“位置”......
祝你好运:)