动态 MapPin 图像未正确缩放 IOS 8 Swift

Dynamic MapPin image not scaling correctly IOS 8 Swift

大家好,我正在使用 mapkit、iOS 8 和 swift,我正在使用自定义地图图钉来显示注释视图。

我正在从服务器等中提取地图数据,我有一个 属性 告诉我是显示自定义地图图钉还是显示地图工具包中的常规地图图钉。

我向 MKannotationview 添加了一个扩展,它可以从 NSURL 异步加载图像并且工作正常。我将类似的 uiimageview 扩展用于我的 tableviews 和异步加载。

如果我将图像资产(地图图钉)本地存储在图像资产文件夹中,它会按预期在地图上显示地图图钉,尺寸正确且无失真等。

问题是当我从我的服务器下载完全相同的图像并设置该图像时,它比存储在图像资产中的图像大并且失真。

所以知道你们知道我的问题。同样,它们都是相同的图像,具有相同的尺寸和尺寸 50x82,分辨率为 72 dpi。

我尝试过的事情:我认为这可能是 IOS 的事情,图像是 2x 等等,所以我将来自服务器的图像的尺寸减半为 25x41,但这没有帮助.我还认为它可能有点问题而不是像素问题。所以我将点数更改为分辨率的一半并将 dpi 加倍。

遗憾的是 none 帮助我仍然得到扭曲的图像。我希望它是动态的,因为在不同的季节和假期,我希望能够在不让用户更新应用程序的情况下更改地图图钉的主题。

如有任何帮助,我们将不胜感激。

好吧,我明白了。图像是我需要的比例的 2 倍(很明显)所以我不得不使用图形上下文缩小它(重绘它)所以只需使用从服务器重新调整的图像你就可以看到它是如何完成的。

        let newSize = CGSize(width: image.size.width/2.0, height: image.size.height/2.0)

        UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0)

        image.drawInRect(CGRect(origin: CGPointZero, size: newSize))

        let scaledImage = UIGraphicsGetImageFromCurrentImageContext()

        UIGraphicsEndImageContext()

        dispatch_async(dispatch_get_main_queue(), { () -> Void in

            self.image = scaledImage
        })