2012-04-05 97 views
0

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

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

当我在模拟器中运行应用程序时,它应该都是这样,但是当我在iPhone 4上测试它时,UIScrollView滞后了很多。

我不知道这样做的方式吗?你可能会尝试引导我如何做到这一点的正确方向,以便UIScrollView不会滞后于设备。

在此先感谢。

+1

我认为你正在使用大量的内存,使用仪器运行你的代码以获得内存使用。 – Robin 2012-04-05 10:40:19

+0

仪器显示的总使用量为1.5 mb:/ – 2012-04-05 11:06:15

回答

1

UIScrollView s为难以使光滑没有某种形式的缓存机制,如UITableView提供的一个。

但是,您可以做的一件事是让您的渲染更轻松,只要可能,请确保使用不透明背景。代替透明视图,您应该使其与底层视图具有相同的颜色。这是有帮助的。

此外,我使用imageWithContentsOfFile:代替imageNamed:来使用UIScrollView来初始化图像,我经历了更好的性能。

0

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

+0

用户是否可以放大DTGridView? – 2012-04-05 14:37:20

+0

我不认为它支持这个,但你可以自己添加这个功能,因为它是开源的 – Demz 2012-04-05 14:46:12