我的UITableView的每个单元格都必须显示一个带有注释的小型MKMapView。 我设法通过创建自定义Cell并在cellForRowAtIndexPath方法中配置其MKMapView来实现此目的。这些位置基于我之前构建的数组。
一切正常,但每次滚动UITableView时,MKMapView都会刷新。 是否可以“缓存”MKMapViews?
由于
答案 0 :(得分:8)
您可以使用此处描述的方法缓存MKMapView的UIImage:Get map image from MKMapView
您应尽可能频繁地使用该UIImage,并仅在用户需要与其进行交互时显示实际地图。为了获得最佳性能,您可以尝试始终在tableview中使用UIImage,当用户点击该行时,加载实际地图(可能在其自己的视图控制器中)。
答案 1 :(得分:3)
您可能不应该在cellForRowAtIndexPath中配置地图视图,而是配置它们并将它们存储在viewDidLoad或awakeFromNib中的数组中。然后只需在cellForRowAtIndexPath中设置单元格的地图视图。
答案 2 :(得分:0)
使用@property在头文件中创建一个uitableview单元格全局对象,如果单元格为零,则将单元格指定给全局对象。
然后每次进入cellforrowatindexpath检查对象是否为nil。如果不是nil,则返回全局对象。
//在class.h中
@property (nonatomic, retain) UITableViewCell *mapCell;
//在cellForRowAtIndexPath
中if (mapCell == nil) {
allocate the cell
}
else{
return mapCell;
}
答案 3 :(得分:0)
有一种更好的方法,使用MKMapSnapshotter
从地图创建图像(在后台thead - 没有滞后!),手动添加引脚,然后您可以缓存图像并使其快速燃烧。我在这里提供了一些代码 - http://synappse.co/mkmapview-too-slow-use-preview/