【问题标题】:Which is the lightest way to draw images and text in Objective C?在 Objective C 中绘制图像和文本的最简单的方法是什么?
【发布时间】:2011-02-03 02:17:33
【问题描述】:

我正在计划实现一个类似于 iphone 相册的组件。我猜使用 uviews 会使组件性能不佳,我的意思是滚动速度很慢,所有的东西......所以我应该怎么做拿? CALayer 在性能方面是否优于 UIViews?有没有其他(更轻的)方式 在不使用 UIView 子类的情况下绘制图像或文本?

任何链接或想法都会很棒,

谢谢!

【问题讨论】:

    标签: iphone objective-c cocoa-touch uiview calayer


    【解决方案1】:

    有很多关于图形以及 UIView 与绘图的优缺点的教程。我不是专家,但我怀疑性能更有可能来自您的实例化和缓存策略。 IE。如果您想要快速滚动,那么着眼于最小化实例化对象的数量、缓存和重用这些对象以及用于加载数据的有效块加载例程都会产生很大的好处。

    但我倾向于先做一个简单的概念验证应用程序,将其加载到设备上,然后查看它的运行速度以及您最有可能需要解决性能问题的地方。除了缓存和重用组件等标准设计策略之外,在确定性能瓶颈发生在哪里之前尝试优化性能通常不是一个好主意。

    【讨论】:

      【解决方案2】:

      如果您只是重新发明现有的系统实现,请从使用系统的实现开始,然后看看具体问题是什么。

      如果您有一些非常专业的东西或使用 UIView 不容易实现,请查看 CoreGraphics.framework 和 CoreText.framework。

      高级库中的大部分绘图和动画都使用 CoreGraphics 技术。但是,它们通常被简化或更高级别,并且可能包含特定的抽象成本。 cg 渲染不适合新手——如果您不了解 UIKit/AppKit 渲染,您可能会浪费很多时间来学习它,而且它不一定是对 UIKit/AppKit 实现的改进。如果您对 UIView/NSView 和图形非常熟悉,那么您的自定义绘图会收获很多。

      (我假设你不会带着这个去 OpenGL 层)

      “猜测使用 uiviews 会使组件性能不佳”可能不是一个好主意。如果实施已经存在,请相信 Apple 花了一些时间对其进行优化——在针对您的需求开发改进的过程中,您将有一些时间进行投资并获得潜在的知识。我建议您从您已经熟悉的内容开始,然后确定它是否需要改进——您甚至可以在 UIView/NSView 中使用 CG 渲染,因此您不必重新创建 UIView 的替代品。由于您在 OP 中没有提到 CoreGraphics,我猜您对它不是很熟悉。

      祝你好运

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多