【问题标题】:UIScrollView lags on iPhoneUIScrollView 在 iPhone 上滞后
【发布时间】:2012-04-19 02:23:15
【问题描述】:

我正在尝试创建一个填字游戏应用程序。游戏在 UIScrollView 中运行,因为玩家应该能够缩放、滚动等。最大的填字游戏是 21x21,这意味着需要有 441 个可触摸的图块。到目前为止,我尝试的是创建一个 UIView 并将其作为子视图添加到 UIScrollView。然后我调用一个创建 441 个自定义 UIButtons 并设置 backgroundImage 的方法。

一些 UIButtons 需要有一个自定义标签覆盖,所以我添加了一个 UILabel 并将它设置在 UIButton 的顶部。

当我在模拟器中运行应用程序时,一切正常,但是当我在 iPhone 4 上测试它时,UIScrollView 滞后很多。

我不知道这是否可以做到这一点?您能否尝试指导我如何做到这一点的正确方向,以便 UIScrollView 不会在设备上滞后。

提前致谢。

【问题讨论】:

  • 我认为您正在使用大量内存,请使用仪器运行您的代码以了解内存使用情况。
  • 仪器显示总使用量为 1.5 mb :/

标签: iphone uiscrollview uibutton lag


【解决方案1】:

如果没有某种缓存机制,比如UITableView 提供的缓存机制,大UIScrollViews 很难平滑。

不过,为了让渲染更轻松,您可以做的一件事是确保尽可能使用不透明背景。与其使视图透明,不如将其设置为与其底层视图相同的颜色。这确实有帮助。

此外,我在使用 imageWithContentsOfFile: 而不是 imageNamed: 来初始化要在 UIScrollView 中使用的图像时体验到了更好的性能。

【讨论】:

    【解决方案2】:

    为了不在内存中保留所有这些按钮,您应该使用可重复使用的表格视图单元格,这将真正提高滚动性能。这里有一个组件可以让您的生活更轻松:DTGridView,还有其他组件(您可以查看Cocoa Controls

    【讨论】:

    • 用户能否放大 DTGridView?
    • 我不认为它支持这个,但是你可以自己添加这个功能,因为它是开源的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多