gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:12:59 24 4
gpt4 key购买 nike

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

我正在从服务器等中提取 map 数据,并且我有一个属性告诉我是否显示自定义 map 图钉或作为 map 套件一部分的常规 map 图钉。

我向 MKannotationview 添加了一个扩展,它可以从 NSURL 异步加载图像,而且效果很好。我将类似的 uiimageview 扩展用于我的表格 View 和异步加载。

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

Normal map pin from image stored locally on device

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

Distorted image from server

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

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

遗憾的是,这些都没有帮助我仍然得到扭曲的图像。我希望它是动态的,因为在不同的季节和假期,我希望能够更改 map 图钉的主题,而不需要用户更新应用程序。

任何帮助将不胜感激。

最佳答案

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

关于ios - 动态 MapPin 图像无法正确缩放 IOS 8 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31547448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com