我试图获得这个结果来获得一个 TitleTextLabel|DescTextLabel 与打破这两者的行。就像这个例子一样,主页是从 URL 字段中分离出来的。
有人可以指出我正确的方向吗?我已在线阅读 / 和文档,但找不到我正在寻找的正确答案。我感谢您的帮助!
谢谢
我试图获得这个结果来获得一个 TitleTextLabel|DescTextLabel 与打破这两者的行。就像这个例子一样,主页是从 URL 字段中分离出来的。
有人可以指出我正确的方向吗?我已在线阅读 / 和文档,但找不到我正在寻找的正确答案。我感谢您的帮助!
谢谢
您需要手动在单元格上绘制该线。
1) 创建 UIView 子类,调用CellDividerView
Override UIView 子类-drawRect:
中的方法CellDividerView.m
。绘图代码用纯色填充整个矩形,在这种情况下为深灰色。
- (void)drawRect:(CGRect)rect
{
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextSaveGState(currentContext);
CGContextSetFillColorWithColor(currentContext, [UIColor lightGrayColor].CGColor);
CGContextFillRect(currentContext, rect);
CGContextRestoreGState(currentContext);
}
在表视图委托的 -tableView:cellForRowAtIndexPath: 中,您创建并初始化一个 CellDividerView ,其框架位于单元格上您想要的位置。在下面的代码中,它位于右侧 40pts,距顶部 0pts,宽 1pt,垂直跨越整个单元格高度。接下来,将此视图添加到单元格的contentView
.
#define CELL_VIEW_TAG 1234
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.detailTextLabel.text = [NSString stringWithFormat:@"Section %u", indexPath.section];
cell.textLabel.text = [NSString stringWithFormat:@"Row %u", indexPath.row];
// Configure the cell...
CellView *cellView = (CellView *)[cell.contentView viewWithTag:CELL_VIEW_TAG];
if (!cellView)
{
cellView = [[CellView alloc] initWithFrame:CGRectMake(40.0, 0.0, 1.0, cell.contentView.frame.size.height)];
[cell.contentView addSubview:cellView];
cellView.tag = CELL_VIEW_TAG;
}
return cell;
}
结果是这样的:
使用自定义单元格样式并调整 40.0pt 偏移量将使您能够准确地将线条定位在您想要的位置。
我可以想到几种方法来添加分界线。您可以覆盖drawRect,并在那里画线。可以完全在 IB 中完成的另一种方法是在左右标签之间添加一个 1 像素宽的标签(浅灰色背景,无文本)。左标签应该有一个固定的宽度和约束到单元格的左侧和 1 像素宽的标签。正确的标签应该只限制 1 像素宽的标签和单元格的右侧(没有固定宽度)。1 像素宽的标签应该对单元格的顶部和底部具有 0 长度约束和固定宽度。
默认情况下它没有分隔线,但请尝试 UITableViewCellStyleValue2