我使用的是MKMapSnapShotter,但是当我在return finalImage上设置断点时,我可以看到值只是一个空的ObjectiveC.NSObject,而不是UIImage

 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等,只为了看到它生成的图像)。
干杯
更新:
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。。。

最佳答案

不能从使用闭包的函数返回,因此也可以将闭包与函数一起使用。

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
}

10-05 20:54
查看更多