首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UITableView addsubview爬虫

UITableView addsubview爬虫
EN

Stack Overflow用户
提问于 2012-10-22 00:13:38
回答 1查看 169关注 0票数 1

我想将包含CABasicAnimation的自定义UIView添加到UITableViewCell中。我通过以下方式完成此操作

代码语言:javascript
复制
if( self.pie_chart_view == nil )
    self.pie_chart_view = [[PieChartView alloc] initWithFrame:CGRectMake( 0.f, 0.f, 30.f, 30.f )];
[pie_chart_view animate_progress_from:0.0 to:1.0 with_duration:5.0];
[cell.contentView addSubview:pie_chart_view];

但代码崩溃,如以下屏幕截图所示:

崩溃显然是由下面这段代码引起的

代码语言:javascript
复制
- (void)drawInContext:(CGContextRef)context {
CGRect circleRect = CGRectInset(self.bounds, 1, 1);

CGColorRef borderColor = [[UIColor whiteColor] CGColor];
CGColorRef backgroundColor = [[UIColor colorWithWhite:0 alpha: 0.75] CGColor];

CGContextSetFillColorWithColor(context, backgroundColor); <--- CRASHES ON THIS LINE WITH EXC_BAD_ACCESS
CGContextSetStrokeColorWithColor(context, borderColor);
CGContextSetLineWidth(context, 2.0f);

CGContextFillEllipseInRect(context, circleRect);
CGContextStrokeEllipseInRect(context, circleRect);

CGFloat radius = MIN(CGRectGetMidX(circleRect), CGRectGetMidY(circleRect));
CGPoint center = CGPointMake(radius, CGRectGetMidY(circleRect));
CGFloat startAngle = -M_PI / 2;
CGFloat endAngle = self.progress * 2 * M_PI + startAngle;
CGContextSetFillColorWithColor(context, borderColor);
CGContextMoveToPoint(context, center.x, center.y);
CGContextAddArc(context, center.x, center.y, radius, startAngle, endAngle, 0);
CGContextClosePath(context);
CGContextFillPath(context);

[super drawInContext:context];
}

但我不明白为什么它会崩溃。我的项目使用ARC。这里我漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-22 01:25:37

好了,我解决了这个问题。当使用ARC时,UIColor会被立即删除。可以通过执行以下操作来修复此问题:

代码语言:javascript
复制
UIColor * __autoreleasing borderColor = [UIColor whiteColor];
UIColor * __autoreleasing backgroundColor = [UIColor colorWithWhite:0 alpha: 0.75];

CGContextSetFillColorWithColor(context, backgroundColor.CGColor );
CGContextSetStrokeColorWithColor(context, borderColor.CGColor );

在此之后,代码不再崩溃。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12999621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档