核心graphics与自定义button的图像

什么时候应该使用核心graphics来制作自定义UIButton的图像? 核心显卡是否更快? 除了独立的决议,还有其他的主要好处吗?

核心graphics的优点:

  • 绘制button的代码可能会比图像文件小。
  • 允许dynamic修改,轻​​微更改,无需添加完整的第二个图像。
  • 正如你所说,独立的决议。
  • 内存消耗较less(不分配内存来保存每个像素)。

图像的优点:

  • 在编辑器中创build图像通常会比编写完美绘制代码更简单。 (如果你使用纯色以外的东西,可能会简单得多。)
  • 编辑器会让你事先看到图像而不需要重新编译。
  • 更容易与其他内置的对象(即,你可以使其成为UIButton的背景)。

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

作为一个妥协,你可以画一次图像,并使用该图像进行未来绘图。 这可以让你从每个好处中获得一些好处。

对ughoavgfhw的评论的其他想法:

  1. 图像可以被caching(就像当你使用[UIImage imageNamed:] )。 所以你甚至不会使用更多的内存为新的button,除了第一个显示。 (并没有分配,除了新指针的内存)。

  2. 您可以使用可拉伸的图像来创buildbutton,并避免一些(并非全部,并非总是)与分辨率相关的问题:

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