swift2 调整图像大头针注解的大小

3hvapo4f  于 2022-11-06  发布在  Swift
关注(0)|答案(2)|浏览(204)

我把个人图像而不是传统的红色大头针。当我打开Map显示大头针时,图像覆盖了整个Map。大头针图像是否有最大尺寸,或者我如何在代码中集成一些内容以适应标准的经典大头针尺寸?

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
    if annotation is MKUserLocation {
        return nil
    }

    let annotationIdentifier = "SomeCustomIdentifier" // use something unique that functionally identifies the type of pin

    var annotationView: MKAnnotationView! = mapView.dequeueReusableAnnotationViewWithIdentifier(annotationIdentifier)

    if annotationView != nil {
        annotationView.annotation = annotation
    } else {
        annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: annotationIdentifier)

        annotationView.image = UIImage(named: "pin maps.png")

        annotationView.canShowCallout = true
        annotationView.calloutOffset = CGPointMake(-8, 0)

        annotationView.autoresizesSubviews = true
        annotationView.rightCalloutAccessoryView = UIButton(type: UIButtonType.DetailDisclosure) as UIView
    }

    return annotationView
}
fv2wmkja

fv2wmkja1#

没有引脚图像的最大大小。您需要调整UIImage的大小。

let annotationIdentifier = "SomeCustomIdentifier"
    var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: annotationIdentifier)
    if annotationView == nil {
        annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: annotationIdentifier)
        annotationView?.canShowCallout = true

        // Resize image
        let pinImage = UIImage(named: "pin maps.png")
        let size = CGSize(width: 50, height: 50)
        UIGraphicsBeginImageContext(size)
        pinImage!.draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
        let resizedImage = UIGraphicsGetImageFromCurrentImageContext()

        annotationView?.image = resizedImage

        let rightButton: AnyObject! = UIButton(type: UIButtonType.detailDisclosure)
        annotationView?.rightCalloutAccessoryView = rightButton as? UIView
    }
    else {
        annotationView?.annotation = annotation
    }
ddrv8njm

ddrv8njm2#

我知道已经有一个可接受的答案,但它对我不起作用。小川康介是正确的,没有最大大小,你必须做一些调整大小。但是,我发现修改MKAnnotationView上的框架会产生更好的结果。
Kiko Lobo评论了对我最有效的解决方案,所以所有的功劳都归功于他。
您只需要编辑MKAnnotationView,而无需对UIImage执行任何操作。Kibo Lobo的评论:
annotationView.Frame = new CGRect(0,0,30,40);
我用Xamarin在C#中做了这个,看起来像这样:
annotationView.Frame = new CGRect(0,0,30,40);
在Xamarin中实现时,接受的答案没有任何效果。希望这能帮助其他遇到图像缩放问题的人。UIImage.Scale()方法使图像非常模糊,而修改Frame则保持了相同的质量。

相关问题