我正试图在IB中的viewController中添加一个mapKit,我正在导航控制器的顶部推动它,但是无论在循环中的哪个位置添加注释,似乎整个过程都会导致延迟,直到mapKit没有呈现出来,包含所有内容的scrollview就不容易滚动。在iOS中有没有类似于Android的后台线程的方法?
下面是代码,即使没有添加任何注释,渲染仍然会导致延迟。我敢肯定还有别的办法。知道吗?
class DetailViewController: UIViewController , MKMapViewDelegate{
override func viewDidLoad() {
super.viewDidLoad()
self.mapView?.delegate = self
}
//changing the annotation
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
if (annotation is MKUserLocation) {
return nil
}
let reuseId = "detailMrker"
var anView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseId)
if anView == nil {
anView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
anView?.image = UIImage(named:"location.png")
anView?.canShowCallout = true
}
else {
anView?.annotation = annotation
}
return anView
}
}
最佳答案
您可以提前呈现一个VC,并在屏幕外以一个模式呈现它。如果您必须从UINavigationController中进行push操作,那么在VC被push之后,您将一直等待VC调用其视图的draw方法。
不过,还有其他事情你可以提前做。使用DetailFeedViewController以外的内容作为CLLocationManagerDelegate和MKMapDelegate。如果你这样做了,你可以得到用户的位置,设置地图坐标,并添加你的注释,在VC被推之前。
关于ios - 在导航 Controller 上推送的viewController中实现MapKit的有效方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42591575/