0

我的应用程序运行缓慢。例如,如果我弹出一个 UIActionSheet,而不是平滑地滚动,它会在大约 5 帧中出现口吃。我知道理想情况下你应该尽可能少地在屏幕上看到,但这就是我所拥有的。

有什么建议可以加快速度吗?

编辑:

在我看来,我有:

自定义导航栏代替常规导航栏。它是一个 UIImageView,使用图像文件。它有一个石英核阴影。它包含 3 个按钮。其中 2 个按钮有 2 个 UIImage,分别用于正常和突出显示,在显示视图时由代码生成。另一个按钮使用图像文件进行正常和突出显示。

背景的图像文件位于其下。背景之上是一个 UITableView。默认情况下,它没有任何单元格(用户添加它们)。我们将忽略该牢房,因为无论它们是否在那儿,它都会发出重击。

tableview 的标题包含一些标签和一个可编辑的 uitextview。随着更多行添加到文本视图,标题的大小会发生变化。它还有一个背景图像,它是透明的,可以让您看到它后面的视图的背景图像。它是从文件中加载的,并且在其之上的纹理图像也是从文件中加载的。

页脚只是从顶部具有相同纹理的文件加载的背景图像。

4

1 回答 1

3

安德鲁,恐怕你还不够具体,无法找出确切的问题。然而,有几件事我已经挑选出来了。首先,检查您的表格视图是否设置为不透明。还要尝试设计您的应用程序,以便您的表格单元格可以是不透明的。我假设您的设计将允许这样做。如果您希望表格及其单元格在其他内容上看起来是半透明的,您需要真正知道如何优化视图渲染性能,如果您确实需要知道的话,您可能需要开发自己的自定义专用替代 UITableView (可以完成但相当先进的东西)。

您还提到使用石英阴影。你应该能够使用 UIKit 在图像周围绘制阴影,除非你有一些专业要求。你确定你需要使用 Quartz 来做你想做的事吗?抱歉,如果您已经知道这一点,但是如果您对 iOS 开发还很陌生并且一直在寻找如何做阴影,您可能已经找到了 Quartz API 并认为这是解决方案,何时(取决于您需要什么) ) 你可能会更好地留在 UIKit。作为一般经验法则,仅当您确定不能仅使用 UIKit API 完成您想做的事情时,才使用 Quartz。

另一件事要检查。如果您使用的是 Quartz,那么您可能正在获取 UIImage 视图的图形上下文并在 drawRect 中的视图上下文上绘图:取决于您的视图层次结构的配置方式,以及您是否将导航栏视图设置为透明UITableView 的顶部,那么您的自定义 drawRect 实现可能会在每个动画帧中被不必要地调用,这将极大地消耗性能。

鉴于您提供的信息水平,我不得不猜测一下,无法给出准确的答案。但是,为了明确了解如何优化 UIView 性能,我建议您观看此视频(尽管您需要一个 Apple 开发人员帐户才能访问它):

https://developer.apple.com/videos/wwdc/2011/

第 121 课 - 了解 UIKit 渲染

希望这可以帮助。保罗。

于 2012-04-11T16:15:45.580 回答