Ich verwende MKMapSnapShotter
, aber wenn ich einen Unterbrechungspunkt auf return finalImage
setze, kann ich sehen, der Wert ist nur ein leeres ObjectiveC.NSObject
, anstelle von UIImage
.Warum ist mein UIImage in Swift nicht korrekt eingestellt?
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;
}
Meine Karte lädt korrekt, usw., so dass das Problem hier sein muss. Was ist der schnellste und einfachste Weg, um das Bild zu Testzwecken anzuzeigen? (Ich möchte nicht ein ImageView usw. entwerfen müssen, nur um das erzeugte Bild zu sehen).
Prost
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);
};
Hinweis: Compiler benötigt mich @escape verwenden ...
Das macht eine Menge Sinn, werde jetzt experimentieren und werde zu Ihnen zurückkommen. Prost –
auch, auch wenn ich einen Breakpoint auf 'finalImage = imageObj! .image;' den Wert immer noch als leeres NSObject ... sicher, das bedeutet, es gibt noch ein weiteres Problem mit der Unylering? –
Haben Sie es mit dem Verschluss versucht? –