Ios 核心图形还是可拉伸图像?

Ios 核心图形还是可拉伸图像?,ios,cocoa-touch,ios6,uiimage,core-graphics,Ios,Cocoa Touch,Ios6,Uiimage,Core Graphics,如果您可以选择在iOS应用程序中使用核心图形或可拉伸UIImage(假设两种方式都可以)渲染图形,您会使用哪种方式?这样做的优缺点是什么?UIImage很可能在封面下使用CoreGraphics(或者CoreAnimation)。您可以自己做同样的工作,也可以犯错误,或者利用UIKit经过良好测试的实现。另一个潜在优势是,使用UIImage可能会获得不明显的性能优势。例如,与OS X不同,您不能在iOS上手动创建由IOSurface支持的CGContext,但也许UIImage可以通过使用私有A

如果您可以选择在iOS应用程序中使用核心图形或可拉伸UIImage(假设两种方式都可以)渲染图形,您会使用哪种方式?这样做的优缺点是什么?

UIImage
很可能在封面下使用CoreGraphics(或者CoreAnimation)。您可以自己做同样的工作,也可以犯错误,或者利用
UIKit
经过良好测试的实现。另一个潜在优势是,使用
UIImage
可能会获得不明显的性能优势。例如,与OS X不同,您不能在iOS上手动创建由
IOSurface
支持的
CGContext
,但也许
UIImage
可以通过使用私有API来完成这项工作。(真正好奇的人可以使用调试器或
dtrace
调查UIKit在做什么)

简而言之,使用完成任务的最高抽象级别(UIKit是比CoreGraphics更高级别的API)。如果
UIImage
的拉伸绘图例程为您完成了任务,我可以想出一些不使用它们的理由。我认为不使用
UIImage
例程的一个潜在原因可能是,如果您正在开发一个跨平台库,该库打算同时在OSX和iOS上运行


PS:“速度慢得让人无法接受,在较低级别的API中这样做是不可能的”在我的脑海中会被视为“无法完成工作”,但如果不尝试这两种方法并进行测量,你就无法知道这一点。

你能提供一些背景吗?我喜欢CoreGraphics的一点是它的分辨率和设备独立性,而可伸缩性则不是。想法?你是怎么想的?源图像“就是这样”——你用来绘制它的API不能改变源材料的分辨率。我使用CoreGraphics来渲染整个图像——所以它甚至不会使用拉伸图像中使用的源材料。啊。从你的问题的措辞中看不清楚。这两个选项的相对性能很难从总体上进行比较。例如,使用CG原语绘制可能比解码压缩图像快,但您必须缓存输出,因为每次显示视图时重新绘制不会比使用UIImage快。显然,最常见的选择似乎是使用图像资源。这是一种权衡,取决于具体情况。如果您的图像有大量alpha混合,绘图速度会变慢,等等。至少从文件加载图像是可以预测的。:)