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

mid*_*s06 6 iphone ios

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

ugh*_*fhw 11

核心图形的优点:

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

图像的优点:

  • 在编辑器中创建图像通常比编写完美绘制图像的代码更简单.(如果使用的是纯色的任何其他,也可能是简单.)
  • 编辑器将允许您事先查看图像而无需重新编译.
  • 更容易使用其他内置对象(即,您可以使其成为UIButton的背景).

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

作为妥协,您可以绘制一次图像,并使用该图像进行绘制.这样您就可以从中获得一些好处.


kpo*_*wer 5

关于ughoavgfhw评论的其他想法:

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

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

    UIImage *myImg = [UIImage imageNamed:@"myImg.png"];
    UIImage *myImgStretchable = [myImg stretchableImageWithLeftCapWidth:10 topCapHeight:10];
    [myButton setBackgroundImage:myImgStretchable forState:UIControlStateNormal];
    
    Run Code Online (Sandbox Code Playgroud)