MKAnnotationView缩放图像也会导致calloutView缩放

时间:2018-01-26 11:02:18

标签: swift swift3 mapkit mkannotation mkannotationview

所以我有一些在地图上标记为注释的公交车站。我没有使用默认的红色气泡或引脚,而是想使用公交车站牌的图像,所以我成功地改变了图像。

这样做,因为图像是512x512,我决定使用transform缩放MKAnnotationView。因此,当我选择一个公共汽车站时,标注气泡现在也被缩放到相同的水平,这使得它不可读。

有没有办法在不缩放calloutView的情况下缩放图像?

我的代码:

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
    let annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: "stopPin")
    annotationView.canShowCallout = true
    annotationView.image = UIImage(named: "busStop.png")
    let transform = CGAffineTransform(scaleX: 0.25, y: 0.25)
    annotationView.transform = transform
    return annotationView
}

1 个答案:

答案 0 :(得分:1)

使用UIGraphics

let image = UIImage(named: "busStop.png")
let resizedSize = CGSize(width: 100, height: 100)

UIGraphicsBeginImageContext(resizedSize)
image?.draw(in: CGRect(origin: .zero, size: resizedSize))
let resizedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

annotationView?.image = resizedImage