【发布时间】:2013-08-21 00:11:03
【问题描述】:
在 iOS 中渲染不透明的非渐变圆形的统一颜色时,似乎有三种可能的技术:
使用像 circle-icon.png 和 circle-icon@2px.png 这样的图像。然后,可以实现以下代码,让 iOS 自动呈现适当的大小:
UIImage *image = [UIImage imageNamed:@"circle-icon"];
self.closeIcon = [[UIImageView alloc] initWithImage:image];
self.closeIcon.frame = CGRectMake(300, 16, image.size.width, image.size.height);
渲染圆角并使用图层,如下所示:。
self.circleView = [[UIView alloc] initWithFrame:CGRectMake(10,20,100,100)];
circleView.alpha = 0.5;
self.circleView.layer.cornerRadius = 50;
self.circleView.backgroundColor = [UIColor blueColor];
使用原生绘图库,例如 CGContextFillEllipseInRect
这 3 种方法的确切性能和维护权衡是什么?
【问题讨论】:
-
使用这三者编写一个测试应用程序并通过 Instruments 运行它。然后你会根据自己的需要知道确切的答案。
-
这可能有助于指示您正在绘制多少个圆圈,以及将绘制的大小范围(因为,例如,如果圆圈很大,UIImage 方法将会进行内存权衡)。如果性能是关键,我建议您对这些方法进行基准测试。我希望 UIImage 最快,而 CG* 方法使用最少的内存。
-
虽然我知道我可以自己进行基准测试,但我想了解一些通用的渲染最佳实践以及是否有已知的基准。
-
让我们说它们是图标大小为了争论...... 60x60 @ 2x。
标签: ios objective-c rendering