【发布时间】:2014-03-14 05:46:34
【问题描述】:
我只是一个相对较新的 iPhone 程序员,所以希望这是有道理的。
我在storyboard 中创建了一个UITableView,它显示正确。我创建了两种不同类型的原型表视图单元格。一个是使用“Left Detail”样式显示文本的简单单元格,而另一个包含MKMapView 和工具栏。我创建了地图的一个实例,所有其余的单元格都是简单的文本单元格。
我遇到的问题是,当最初显示表格视图时,包含地图的UITableViewCell 不在屏幕上。当我向下滚动时,加载单元格时 UI 会暂停。基于 Instruments,似乎时间都花在了[MKMapView initWithCoder],但我不知道在出队之前加载原型单元格的任何方法。
以前地图单元格位于首屏,因此在我进行任何滚动之前已加载。现在我已经重新安排了一些东西,它稍后加载并导致延迟。
有什么方法可以预加载包含MKMapView 的UITableViewCell,或者将MKMapView 的部分加载放到后台?
【问题讨论】:
-
地图是用户迭代的吗?你的目标是 >= 7.0,还是你也支持 6?
-
地图是用户交互的。此外,目前这实际上只是一个个人项目,因此目前的目标是 >=7.0,尽管如果我看到需要,这可能会改变。
-
另外,我确实注意到,当我在设备上独立运行应用程序时,性能几乎可以接受。当我使用 Xcode 调试器运行它时,减速更加明显。
-
这种情况在使用
XIBs/storyboards 时经常发生。您可能希望以编程方式(创建、添加和修改)您的地图。性能改进不会很大,但确实会有所作为。此外,您可能想要做的一件事是,尝试在地图实际加载时使用MKMapSnapshotter在单元格中添加占位符快照,并在完成加载后立即删除快照。 -
@n00bProgrammer 在加载地图时使用
MKMapSnapshotter很有趣。我读过有关使用它来创建图片的信息,但没有考虑在加载时使用它。我会调查的。
标签: ios iphone uitableview mkmapview