【问题标题】:Is there a faster way of doing this?有没有更快的方法来做到这一点?
【发布时间】:2010-09-24 12:54:54
【问题描述】:

为了一个有趣的小练习项目,我这样做了:

我在视图控制器视图中添加了一个 UIView 实例网格,它的工作原理与数字段 LCD 非常相似(但那些具有正方形的 LCD 屏幕可以显示几乎任何内容,而不仅仅是数字……虽然分辨率低) .

屏幕上有 8 * 8 个视图(总共 64 个视图)。控制器对象能够设置每个视图的颜色,以显示一定的数字。我已经为数字 8 编写了“矩阵”。

我想添加某种噪音效果,例如没有接收信号的坏掉的电视。当没有数字可以显示时,这64个视图必须尽可能快地以各种彩虹色疯狂闪烁。

我的 for 循环遍历所有这些视图并设置 backgroundColor 每秒只能执行 5 到 10 次。屏幕更新不够快,看起来不像电视噪音。

当我在 OpenGL ES 中实现这个矩阵然后显示这个 OpenGL ES 视图时会快很多吗?在 OpenGL ES 中制作可寻址正方形矩阵有多难?

【问题讨论】:

    标签: iphone performance uikit opengl-es


    【解决方案1】:

    高频更新 64 个 UIView 会很困难。我建议使用一个 UIView 并在该视图中创建 64 个 CALayers。

    【讨论】:

    • CALayer 更新速度比 UIView 快吗?
    • 换出 CALayer 比绘制到视图中要快。
    • 是的。实际上 UIview 是建立在 CALayer 之上的。你最终要做的是创建新的 CALayers 并将它们添加为 UIView 层的子层。
    • UIView 不就是 CALayer 的一个包装器吗?可能会跳过一些方法调用,但我无法想象这是一个很大的改进?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-13
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    相关资源
    最近更新 更多