2015-07-21 49 views
0

大家好,我正在使用mapkit,iOS 8和swift,并且我使用自定义地图引脚来显示注释视图。动态MapPin图像不能正确缩放IOS 8 Swift

我从服务器等拉的地图数据,我有一个属性告诉我wether显示自定义地图别针或常规地图别针是地图套件的一部分。

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

如果我在图像资产的本地存储的图像资源(地图针)文件夹将其与地图上的地图销结果与正确的尺寸且没有失真等

Normal map pin from image stored locally on device

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

Distorted image from server

所以知道你们&女生知道我的问题。再次,它们都是具有相同大小和尺寸的50x82和72 dpi的相同图像。

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

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

任何帮助将不胜感激。

回答

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 
     })