2010-02-08 98 views
0

我想知道这是最好的方式,在速度和效率方面,画出一个帧周围的图像在iPhone上,特别是当我不得不抽签这些图像:Quartz for iPhone是否绘制视图的不可见部分?

1)绘制图像,然后周围 或 2)绘制一个矩形,用某种颜色填充,然后绘制矩形内的图像留下一些偏移像素以模仿帧

不石英绘制一切,它被告知或者是它的智能框架足以只绘制真正可见的东西? 我的感觉是,第一种方法更好,因为实际上绘制的绘图少。这是真的吗?

感谢 P.

回答

1

如果您正在使用-drawRect:进行自定义绘制,则只能在视图的范围内进行石英绘图。这就是说,我认为如果您为每个图像简单地创建UIImageViews,然后在视图的图层上使用borderWidth,borderColor和可能的cornerRadius属性来设置边框,您会看到最佳性能。例如:

imageView.layer.cornerRadius = 10.0f; 
imageView.layer.borderWidth = 3.0f; 
imageView.layer.borderColor = [[UIColor blackColor] CGColor]; 

将放置3个像素宽的黑色边框你的看法,并给它在角落一个10像素的半径。

+0

我想过这个解决方案,但我的图像绘制在一个自定义的UITableViewCell中,为了实现平滑滚动,我在drawRect中绘制所有东西,而不是添加子视图。我想知道是否有可能在其superview的drawRect方法中绘制子视图?有没有一种方法,比如NSString的drawAtPoint或drawInRect,用于UIViews? – 2010-02-17 18:58:32

+0

您可以对UIView的图层使用-renderInContext:,并将大多数图层的内容直接绘制到Quartz上下文中。 – 2010-02-18 13:13:13

0

如果性能是一个问题,你应该尽量减少你的图形上下文进行操作,尤其是没有明显的组件的人的数量。

在您的具体情况下,我认为您需要在iPhone上测试这两个选项(如果可能,请使用ist gen)并对它们进行基准测试。也许只是填充整个矩形而不是计算哪些像素是框架的一部分,哪些不是?

这取决于图形芯片。

+0

它们只是矩形图像,因此绘制边框就像绘制矩形和描边一样简单。无论如何,我想我必须做一些真正的基准。 – 2010-02-17 19:01:38

相关问题