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

时间:2015-07-21 18:59:14

标签: ios swift ios8 uiimageview mapkit

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

我正在从服务器等处提取地图数据,并且我有一个属性告诉我是否可以显示自定义地图引脚或常规地图引脚,它是地图工具包的一部分。

我添加了MKannotationview的扩展,它从NSURL异步加载图像,并且工作得很好。我为我的tableviews和异步加载使用类似的uiimageview扩展。

如果我将图像资源(地图图钉)本地存储在图像资源文件夹中,则会在地图上按预期生成正确尺寸且无失真等的地图图钉。

Normal map pin from image stored locally on device

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

Distorted image from server

所以要知道你们和他们加尔斯知道我的问题。同样,它们都是相同的图像,具有相同的尺寸和尺寸50x82,72 dpi。

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

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

好吧我明白了。图像是我需要它的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
        })