Iphone 该应用程序具有缓冲行为

Iphone 该应用程序具有缓冲行为,iphone,objective-c,Iphone,Objective C,我的应用程序运行缓慢。例如,如果我弹出一个UIActionSheet,它不是平滑地滚动,而是在大约5帧内结巴。我知道,理想情况下,屏幕上的视图应该尽可能少,但这正是我所拥有的 有什么加速的建议吗 编辑: 我认为: 自定义导航栏取代常规导航栏。这是一个UIImageView,使用图像文件。它有一个四芯阴影。它包含3个按钮。其中2个按钮有2个UIImage,分别用于普通和高亮显示,在显示视图时由代码生成。另一个按钮将图像文件用于普通和高亮显示 背景的图像文件位于该文件下。背景上方是一个UITable

我的应用程序运行缓慢。例如,如果我弹出一个UIActionSheet,它不是平滑地滚动,而是在大约5帧内结巴。我知道,理想情况下,屏幕上的视图应该尽可能少,但这正是我所拥有的

有什么加速的建议吗

编辑:

我认为:

自定义导航栏取代常规导航栏。这是一个UIImageView,使用图像文件。它有一个四芯阴影。它包含3个按钮。其中2个按钮有2个UIImage,分别用于普通和高亮显示,在显示视图时由代码生成。另一个按钮将图像文件用于普通和高亮显示

背景的图像文件位于该文件下。背景上方是一个UITableView。默认情况下,它没有任何单元格(用户添加它们)。我们将忽略这个细胞,因为不管他们是否在那里,它都在跳动

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


页脚只是从一个文件加载的背景图像,上面有相同的纹理。

Andrew,恐怕你还不够具体,无法找出确切的问题。然而,有几件事我已经挑出来了。首先,检查表视图是否设置为不透明。还可以尝试设计应用程序,使表格单元格不透明。我想你的设计会允许这一点。如果您希望表格及其单元格在其他内容上显示为半透明,那么您需要真正了解如何优化视图渲染性能。如果确实需要了解这一点,您可能需要开发自己的自定义专业替代UITableView(可以完成,但非常高级)

您还提到使用石英阴影。您应该能够使用UIKit在图像周围绘制阴影,除非您有一些专业要求。你确定你需要用石英做你想做的事吗?抱歉,如果您已经知道这一点,但是如果您对iOS开发相当陌生,并且一直在寻找如何进行阴影处理,那么您可能已经找到了Quartz API,并假设这就是解决方案,而(取决于您的需要)您可能更适合使用UIKit。作为一般的经验法则,只有当您确信不能仅使用UIKITAPI实现您想要的功能时,才使用Quartz

还有一件事要检查。如果您使用的是Quartz,则可能会在drawRect中的视图上下文中获取UIImage视图和图形的图形上下文:这取决于视图层次结构的配置方式,并且如果您将导航栏视图设置为在UITableView顶部透明,然后,每个动画帧都可能会不必要地调用自定义drawRect实现,这将大大降低性能

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

第121课时-理解UIKit呈现


希望这有帮助。保罗

安德鲁,恐怕你还不够具体,无法找出确切的问题。然而,有几件事我已经挑出来了。首先,检查表视图是否设置为不透明。还可以尝试设计应用程序,使表格单元格不透明。我想你的设计会允许这一点。如果您希望表格及其单元格在其他内容上显示为半透明,那么您需要真正了解如何优化视图渲染性能。如果确实需要了解这一点,您可能需要开发自己的自定义专业替代UITableView(可以完成,但非常高级)

您还提到使用石英阴影。您应该能够使用UIKit在图像周围绘制阴影,除非您有一些专业要求。你确定你需要用石英做你想做的事吗?抱歉,如果您已经知道这一点,但是如果您对iOS开发相当陌生,并且一直在寻找如何进行阴影处理,那么您可能已经找到了Quartz API,并假设这就是解决方案,而(取决于您的需要)您可能更适合使用UIKit。作为一般的经验法则,只有当您确信不能仅使用UIKITAPI实现您想要的功能时,才使用Quartz

还有一件事要检查。如果您使用的是Quartz,则可能会在drawRect中的视图上下文中获取UIImage视图和图形的图形上下文:这取决于视图层次结构的配置方式,并且如果您将导航栏视图设置为在UITableView顶部透明,然后,每个动画帧都可能会不必要地调用自定义drawRect实现,这将大大降低性能

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

第121课时-理解UIKit呈现


希望这有帮助。保罗

创建UI调用是在主线程上还是在单独的后台线程上?您确定没有硬循环中的后台任务吗?UI内容在主线程上,但在显示操作表时,所有内容都已设置好。您能告诉我们您的看法吗?我记得我的全部经历