我想知道这是最好的方式,在速度和效率方面,画出一个帧周围的图像在iPhone上,特别是当我不得不抽签这些图像:Quartz for iPhone是否绘制视图的不可见部分?
1)绘制图像,然后周围 或 2)绘制一个矩形,用某种颜色填充,然后绘制矩形内的图像留下一些偏移像素以模仿帧
不石英绘制一切,它被告知或者是它的智能框架足以只绘制真正可见的东西? 我的感觉是,第一种方法更好,因为实际上绘制的绘图少。这是真的吗?
感谢 P.
我想知道这是最好的方式,在速度和效率方面,画出一个帧周围的图像在iPhone上,特别是当我不得不抽签这些图像:Quartz for iPhone是否绘制视图的不可见部分?
1)绘制图像,然后周围 或 2)绘制一个矩形,用某种颜色填充,然后绘制矩形内的图像留下一些偏移像素以模仿帧
不石英绘制一切,它被告知或者是它的智能框架足以只绘制真正可见的东西? 我的感觉是,第一种方法更好,因为实际上绘制的绘图少。这是真的吗?
感谢 P.
如果您正在使用-drawRect:进行自定义绘制,则只能在视图的范围内进行石英绘图。这就是说,我认为如果您为每个图像简单地创建UIImageViews,然后在视图的图层上使用borderWidth
,borderColor
和可能的cornerRadius
属性来设置边框,您会看到最佳性能。例如:
imageView.layer.cornerRadius = 10.0f;
imageView.layer.borderWidth = 3.0f;
imageView.layer.borderColor = [[UIColor blackColor] CGColor];
将放置3个像素宽的黑色边框你的看法,并给它在角落一个10像素的半径。
如果性能是一个问题,你应该尽量减少你的图形上下文进行操作,尤其是没有明显的组件的人的数量。
在您的具体情况下,我认为您需要在iPhone上测试这两个选项(如果可能,请使用ist gen)并对它们进行基准测试。也许只是填充整个矩形而不是计算哪些像素是框架的一部分,哪些不是?
这取决于图形芯片。
它们只是矩形图像,因此绘制边框就像绘制矩形和描边一样简单。无论如何,我想我必须做一些真正的基准。 – 2010-02-17 19:01:38
我想过这个解决方案,但我的图像绘制在一个自定义的UITableViewCell中,为了实现平滑滚动,我在drawRect中绘制所有东西,而不是添加子视图。我想知道是否有可能在其superview的drawRect方法中绘制子视图?有没有一种方法,比如NSString的drawAtPoint或drawInRect,用于UIViews? – 2010-02-17 18:58:32
您可以对UIView的图层使用-renderInContext:,并将大多数图层的内容直接绘制到Quartz上下文中。 – 2010-02-18 13:13:13