无法在 UITableViewCell 的 drawRect 中绘制
Posted
技术标签:
【中文标题】无法在 UITableViewCell 的 drawRect 中绘制【英文标题】:Can't draw in UITableViewCell's drawRect 【发布时间】:2013-09-18 23:25:36 【问题描述】:我在自定义 UITableViewCell 的 drawRect 方法中绘图时遇到问题。这是我正在使用的代码
- (void)drawRect:(CGRect)rect
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGPoint origin = _faceView.frame.origin;
CGFloat width = _faceView.frame.size.width;
CGFloat height = _faceView.frame.size.height;
CGFloat border = 2.0f;
CGPoint startPt = CGPointMake(origin.x + width/2, self.frame.size.height);
CGContextBeginPath(ctx);
CGContextMoveToPoint(ctx, startPt.x, startPt.y);
CGPoint basePt = CGPointMake(startPt.x, origin.y - height - border);
CGContextAddLineToPoint(ctx, basePt.x, basePt.y);
CGRect circleRect = CGRectMake(origin.x - border, origin.y - border, width + 2 * border, height + 2 * border);
CGContextAddEllipseInRect(ctx, circleRect);
UIColor *color = [UIColor redColor];
CGContextSetFillColorWithColor(ctx, color.CGColor);
CGContextSetStrokeColorWithColor(ctx, color.CGColor);
CGContextSetLineWidth(ctx, 1.0f);
CGContextDrawPath(ctx, kCGPathFillStroke);
我进行了调试,以确保所有数值都有意义并且看起来确实如此。无法真正找出为什么屏幕上没有绘制任何内容。
不管怎样,这也是一个在笔尖中定义的单元格。我正在使用 ios 7 sdk 构建。
有什么想法吗?
tahnks
【问题讨论】:
我同意。除非需要,否则尽量不要使用 drawRect 方法,因为它会影响事物运行的性能。 【参考方案1】:尝试将背景颜色属性设置为透明色
self.backgroundColor = [UIColor clearColor]
【讨论】:
谢谢您的好心先生!为我省去了很多麻烦【参考方案2】:你可能不应该在 UITableViewCell 自己的 drawRect 中这样做。相反,创建一个自定义 UIView 并将其添加为子视图。
另见this answer。
【讨论】:
【参考方案3】:你必须设置
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
.....
[cell setNeedsDisplay];
return cell;
【讨论】:
【参考方案4】:尝试设置backgroundColor
的contentView
属性以清除颜色
self.contentView = [UIColor clearColor];
【讨论】:
以上是关于无法在 UITableViewCell 的 drawRect 中绘制的主要内容,如果未能解决你的问题,请参考以下文章
无法在 UITableViewCell 内识别 UIScrollView,无错误
在 UITableViewCell 中无法点击 UIButton
无法在 UITableViewCell 中禁用 UIButton