Core Graphics Vs图像用于自定义按钮

时间:2011-06-06 01:45:31

标签: iphone ios

我应该何时使用核心图形覆盖图像来制作自定义UIButton? 核心图形更快吗?除了解决方案独立性之外,还有其他任何重大好处吗?

2 个答案:

答案 0 :(得分:11)

核心图形的优点:

  • 绘制按钮的代码可能小于图像文件。
  • 允许动态修改,轻​​微更改,无需添加完整的第二张图像。
  • 如你所述,决议独立。
  • 内存密集程度较低(不会分配内存来容纳每个像素)。

图片的优点:

  • 在编辑器中创建图像通常比编写完美绘制图像的代码更简单。 (如果你使用的不是纯色,那么它可能很多更简单。)
  • 编辑器可让您预先查看图像而无需重新编译。
  • 更容易使用其他内置对象(即,您可以将其作为UIButton的背景)。

至于跑步时间,我不确定。我猜想CG对于简单绘图会更快,大多数像素都没有改变,但对于更复杂的绘图,大多数像素都会改变,图像会更快(假设你使用的是PNG格式,所以它会得到优化否则,CG可能会更快。)

作为折衷方案,您可以将图像绘制一次,并将该图像用于将来的绘图。这样您就可以从中获得一些好处。

答案 1 :(得分:5)

ughoavgfhw's comment的其他想法:

  1. 可以缓存图像(就像使用[UIImage imageNamed:]时一样)。因此,除了显示的第一个按钮之外,您甚至不会为新按钮使用更多内存。 (并且没有分配,除了新指针的内存)。

  2. 您可以使用可伸缩图像创建按钮,并避免一些(并非所有且不总是)分辨率依赖性问题:

    UIImage *myImg = [UIImage imageNamed:@"myImg.png"];
    UIImage *myImgStretchable = [myImg stretchableImageWithLeftCapWidth:10 topCapHeight:10];
    [myButton setBackgroundImage:myImgStretchable forState:UIControlStateNormal];