Iphone 自定义按钮的核心图形与图像

Iphone 自定义按钮的核心图形与图像,iphone,ios,Iphone,Ios,什么时候我应该使用核心图形而不是图像来制作自定义UIButton? 核心图形更快吗?除了分辨率独立性,还有其他主要好处吗?核心图形的优点: 绘制按钮的代码可能比图像文件小 允许动态修改,轻微更改而无需添加完整的第二个图像 正如你提到的,决议是独立的 内存占用较少(不分配内存来容纳每个像素) 图像的优点: 在编辑器中创建图像通常比编写完美绘制图像的代码要简单。(如果使用纯色以外的任何颜色,可能会简单得多。) 编辑器将允许您事先查看图像,而无需重新编译 更易于使用其他内置对象(即,您可以将其作

什么时候我应该使用核心图形而不是图像来制作自定义UIButton? 核心图形更快吗?除了分辨率独立性,还有其他主要好处吗?

核心图形的优点:

  • 绘制按钮的代码可能比图像文件小
  • 允许动态修改,轻微更改而无需添加完整的第二个图像
  • 正如你提到的,决议是独立的
  • 内存占用较少(不分配内存来容纳每个像素)
图像的优点:

  • 在编辑器中创建图像通常比编写完美绘制图像的代码要简单。(如果使用纯色以外的任何颜色,可能会简单得多。)
  • 编辑器将允许您事先查看图像,而无需重新编译
  • 更易于使用其他内置对象(即,您可以将其作为UIButton的背景)
至于跑步时间,我不确定。我猜CG对于大多数像素都没有改变的简单绘图来说会更快,但是对于大多数像素都改变的更复杂绘图来说,图像会更快(假设你使用PNG格式,所以它会被优化。否则,CG可能总是更快)

作为一种折衷方法,您可以在图像中绘制一次,然后将该图像用于将来的绘制。这将使您能够从每种方法中获得一些好处。

其他想法:

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

  • 您可以使用可拉伸图像创建按钮,并避免与分辨率相关的一些(不是全部,也不总是)问题:

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

  • 你能通过制作一个带有核心图形的自定义按钮和一个带有图像的自定义按钮来阐明你的意思吗?