【发布时间】:2013-09-19 00:06:41
【问题描述】:
我有一个UITableViewCell 子类,它具有以下drawRect: 实现。它将在单元格底部绘制一条线,缩进 30 点以匹配我们的设计。 tableView.separatorStyle 设置为 UITableViewSeparatorStyleNone 以代替此自定义绘图。
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
if (!_hideBottomLine) {
CGContextRef ref = UIGraphicsGetCurrentContext();
CGContextSetShouldAntialias(ref, NO);
CGContextSetStrokeColorWithColor(ref, [UIColor colorWithWhite:0.75 alpha:1].CGColor);
CGContextSetLineWidth(ref, 1);
CGContextMoveToPoint(ref, 30, CGRectGetMaxY(rect));
CGContextAddLineToPoint(ref, CGRectGetMaxX(rect), CGRectGetMaxY(rect));
CGContextStrokePath(ref);
}
}
当使用 iOS 6 SDK 构建时,这在 iOS 6 和 iOS 7 上运行良好。现在我正在使用 iOS 7 SDK 构建该行并没有出现。
我是否错过了 iOS 7 SDK 中 CG 绘图的一些变化?
编辑:
所以我现在意识到在 iOS 7 中使用cell.separatorInset 有更好的方法来做到这一点,我还发现了一些我编写的其他类似的 CG 代码。所以我认为这个问题与在UITableViewCell 上实现drawRect: 无关
不过,我仍然想知道如何在 iOS 7 中对单元格进行自定义绘图。
【问题讨论】:
-
这些行是否在单元格限制内? iOS7 有一个新的子视图,可以将您添加到 contentView 的任何内容剪辑到边界。
-
这些特别是在边缘,所以它们可能会像你说的那样被剪掉。但是,我在另一个单元格中使用了相同的技术,我在单元格的中心绘制了一条垂直线,该线在 iOS 7 中没有显示。
-
试试把iOS7中隐藏的裁剪机制去掉看看会发生什么:[cell.contentView.superview setClipsToBounds:NO];
标签: ios uitableview core-graphics ios7