【问题标题】:Loading an image or using CGGradient more efficient?加载图像还是使用 CGGradient 更有效?
【发布时间】:2012-06-12 15:34:48
【问题描述】:

我正在为我的一个应用中的新 UI 做一些试验。我想知道,添加渐变背景等 UI 元素的最有效方法是什么(同时牢记应用程序的大小以及速度/内存消耗)。

在 Inkscape 或 Illustrator 中创建元素,然后通过 UIImage>UIIMageView 加载它们会更好吗?还是最好使用CGGradientCAGradientLayer

另外,我经常想知道这些事情,我想知道是否有人可以解释我如何为自己测试这些事情(速度、内存消耗、整体性能)。

【问题讨论】:

    标签: ios performance user-interface gradient


    【解决方案1】:

    CAGradientLayers 非常好。我几乎总是倾向于使用 CGGradient 或使用 CAGradientLayer 绘制渐变而不是使用图像,特别是因为您不需要包含视网膜/非视网膜、iPhone/iPad 组合,并更改颜色变成了调整一行代码的问题,而不是在成像软件中重新生成一系列图像。

    如果您也在 drawRect 中进行其他绘图,请使用 CGGradient 进行绘图。如果您只想要背景,请使用 CAGradientLayer。

    您可以使用 Instruments 分析性能(产品 --> XCode 中的配置文件)

    • 如果有滚动/动画,核心动画工具将为您提供每秒帧数
    • 时间分析器工具会告诉您哪些函数占用了您的时间
    • 各种内存工具会显示内存消耗情况

    【讨论】:

    • 感谢 jrturton。有什么对性能更好的想法(无需我自己检查)吗?
    • 这真的取决于你对视图做了什么。我将从最简单的实现(cagradientlayer,IMO)开始,如果性能不令人满意,请寻找其他地方。如果你没有滚动或动画,那么性能是无关紧要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    相关资源
    最近更新 更多