2015-07-21 51 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 
     })