我在XCode上使用Utility Application项目模板创建了一个非常简单的应用程序。我的MainView有两个UIPickerView组件和两个按钮。 FlipSideView有另一个UIPickerView。
主视图上的拾取器每个都有4个段,每个段有8行。翻盖侧的拾取器只有1个段,有8行。所有选择器上的所有行都只是文本。
只需这个设置,按下按钮来回转动视图会在动画实际开始之前显示一个明显的延迟,然后动画实际上看起来比它应该更快,就像它试图弥补失去的时间。
我删除了界面构建器中的选择器并将应用程序加载到手机上,动画现在看起来很自然。我也尝试了一个选择器(另一个),事情似乎仍然正常。所以我现在的理论是主视图中涉及的对象数量是原因。问题是我认为不是那么多(4 x 8 x 2 = 64),但我可能完全错了。这几乎是我的第一个应用程序,所以也许我只是做了一些严重的错误,或者手机的处理能力比我想象的要多得多。
我正在考虑使用pickerView创建选择器视图:viewForRow:forComponent:reusingView:看看这是否有希望表现更好,但我不确定这是否只是浪费时间。
有什么建议吗?
由于 鲁伊奎拉
P.S。:在3.1.2上测试3G手机
答案 0 :(得分:0)
行数和组件数与选择器视图本身的性能关系不大。 Picker视图就像表一样工作,它们实际上并没有内存中的组件和行数。相反,他们会在任何时候交换并重复使用屏幕上显示的少量视图。因此,如果您有4个组件,每个组件一次显示5行,则即使每个组件中有数百个逻辑行,选取器视图也不会保存超过20个视图。
因此,选择器视图的数据源中的逻辑元素数量与其视觉性能无关。
我不确定你看到的选择器视图和转换是什么,但很可能是因为你的自定义代码中的某个地方陷入了加载和配置选择器视图的结果。我会设置断点/日志以查看它在转换期间花费的时间。