在iPhone上使用自定义UI图形的最佳方法是什么?
我遇到CGContextDrawPDFPage
和恐慌Shrinkit。我应该使用PDF来存储我的矢量ui图形并使用CGContextDrawPDFPage
加载它们来绘制它们。
之前我问过what way Apple store their UI graphics并且被压了png。我可以想到的选项如下,但我也对任何其他技术感兴趣...
这个问题仅针对矢量图形(但我想有些人可能只使用位图?)。寻找标准/最有效/最有效的方法。
编辑:Bounty补充说,我很想听听任何与UI设计师合作的人的过程,或者他们自己都是UI设计师。关于分辨率独立性的指示,即iPad / iPhone HD的未来验证。
非常感谢 罗斯
答案 0 :(得分:1)
我可以建议3种不同的方式,其中2种已经提到过:
每个都有自己的优势,具体取决于你想做什么:
就性能(一次性绘图)和易用性而言,两者之间应该没有太大差异(存在细微差别,但没有什么严重的)。显然,Opacity可以为两者导出源代码(我没有亲自使用它)。也就是说,在选择之前应该考虑一些事项:
结论:使用CGLayer,除非是特殊情况。
我没有任何基准,但我希望CGLayer稍微快一点:(1)不需要读取文件。 (2)pdf命令应转换为系统的图形元素,这与创建CGLayer大致相同。 (3)我不确定如何缓存pdf页面,但我不认为它比CGLayer更快。无论如何,除非你想要优化直到最后一个毫秒,所以这一切都不应该有太大的区别。同样,选择应基于您的用例:
CGContextDrawPDFPage
,这意味着即使是简单的任务,例如缩放/转换绘图也会更难。结论:如果您不需要对绘图做很多事情(只想显示图标或其他内容),请使用pdf。如果您需要在应用程序中处理它,请考虑使用CGLayer。
当然,您可以随时根据需要混合使用方法:例如:加载一个pdf文件,把它放在CGLayer中进行调整,用UIView绘制它,你可以在上面放一个徽章!
答案 1 :(得分:1)
我偶然发现了这个问题,因为我对PDF也有疑问。我正在与UI设计师合作,我们成功地使用PDF来创建UI元素。例如:对于一个按钮,我们有3个PDF用于ON,OFF和阴影。我写了一段代码,将PDF转换为UIImage。它可以缩放生成的图像,甚至可以将其着色,以便为多种样式的按钮设置一个模板。它的效果非常好:))
我们的问题是我们无法在没有质量损失的情况下扩展矢量图形。这就是为什么我们决定使用足够大的图形,我们只需要缩小它们。但我仍然想知道在将PDF绘制到上下文并创建UIImage之前是否有办法扩展PDF。这是我的post。