2016-09-18 50 views
0

我使用的是MKMapSnapShotter,但是当我在return finalImage上设置断点时,我可以看到该值仅为空ObjectiveC.NSObject,而不是UIImage为什么我的UIImage在Swift中没有正确设置?

func getIMG() -> UIImage{ 
     var finalImage = UIImage(); 
     let imageOptions = MKMapSnapshotOptions(); 
     imageOptions.region = mapView.region; 
     imageOptions.size = mapView.frame.size; 
     imageOptions.showsBuildings = true; 

     let imgMap = MKMapSnapshotter(options: imageOptions); 
     imgMap.start(completionHandler: { (imageObj: MKMapSnapshot?, Error) -> Void in 
      if(Error != nil){ 
       print("\(Error)"); 
      }else{ 
       finalImage = imageObj!.image; 
      } 

     }); 

     return finalImage; 

    } 

我的地图加载正确等,所以问题必须在这里。此外,什么是用于测试目的的最快和最简单的方式来查看图像? (我不想为了看它生成的图像而设计一个imageView等等)。

干杯

UPDATE:

func getIMG(completion: @escaping (UIImage)->()){ 
     var finalImage = UIImage(); 
     let imageOptions = MKMapSnapshotOptions(); 
     imageOptions.region = mapView.region; 
     imageOptions.size = mapView.frame.size; 
     imageOptions.showsBuildings = true; 

     let imgMap = MKMapSnapshotter(options: imageOptions); 
     imgMap.start(completionHandler: { (imageObj: MKMapSnapshot?, Error) -> Void in 
      if(Error != nil){ 
       print("\(Error)"); 
      }else{ 
       finalImage = imageObj!.image; 
      } 
      completion(finalImage); 

     }); 

    } 

-

map.getMapAsIMG{ (image) in 
     print(image); 
    }; 

注:编译器需要我用@escape ...

回答

3

不能从使用功能恢复闭包,所以你也可以在你的函数中使用闭包。

func getIMG(completion: (UIImage) ->()) { 

    var finalImage = UIImage(); 
    let imageOptions = MKMapSnapshotOptions(); 
    imageOptions.region = mapView.region; 
    imageOptions.size = mapView.frame.size; 
    imageOptions.showsBuildings = true; 

    let imgMap = MKMapSnapshotter(options: imageOptions); 
    imgMap.start(completionHandler: { (imageObj: MKMapSnapshot?, error) -> Void in 
     if(error != nil){ 
      print("\(Error)"); 
     }else{ 
      finalImage = imageObj!.image; 
     } 
     completion(finalImage) 
    }); 
} 

现在就像这样调用这个函数。

self.getIMG { (image) in 
    //Access the image object 
} 
+0

这样做很有意义,我现在要做实验,并且会回复给您。还欢呼 –

+0

,即使当我在'finalImage = imageObj!.image;'上放置了一个断点时,该值仍然以空的NSObject形式出现......当然,这意味着还有另一个无法解决的问题? –

+0

你尝试关闭吗? –

相关问题