Xcode:为什么Xcode会显示比AS-IS更大的图像?

时间:2017-08-21 10:48:19

标签: ios xcode image ios10 google-maps-sdk-ios

为什么Xcode会显示比AS-IS更大的图像?

http://users.telenet.be/thomazz/ScreenShot4.png

http://users.telenet.be/thomazz/ScreenShot3.png

情景:

  1. 我有一张照片。
  2. 我调整了这个UIImage。
  3. 我导出已调整大小的UIImage。
  4. 我注释掉了调整大小的代码。
  5. 我在Xcode中导入已调整大小的图像。
  6. 问题1:Xcode显示的图像是正常情况的两倍。
  7. 问题2:当我使用导出调整大小的图像运行我的应用程序时,它是两倍大。
  8. 查看截图。

2 个答案:

答案 0 :(得分:0)

这完全取决于你的UIImageView框架,而不是它的尺寸。

因此,如果您有一个1024x1024的图像并将其放置在10x10的帧中,它将渲染为10x10的大小,反之亦然。

如果你想要它更大,那么让你的UIImageView更大

编辑:所以这是一个谷歌地图图标

将已调整大小的图像设置为标记图标,即

marker.icon = self.imageWithImage(image: UIImage(named: "imageName")!, scaledToSize: CGSize(width: 3.0, height: 3.0))

添加此功能

func imageWithImage(image:UIImage, scaledToSize newSize:CGSize) -> UIImage{
    UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0);
    image.drawInRect(CGRectMake(0, 0, newSize.width, newSize.height))
    let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return newImage
}

答案 1 :(得分:0)

亲爱的Mohammad Bashir Sidani,我有这个代码。 这段代码有效。但它创造了一个新的UIImage。 然后我使用UIImagePNGRepresentation(resizedImage)来导出图像。 我禁用下面的代码以使用“以编程方式调整大小的图像”。 这个新调整大小的图像被Xcode炸毁...... :(

extension UIImage {
    func resizeImage(_ dimension: CGFloat, opaque: Bool, contentMode: UIViewContentMode = .scaleAspectFit) -> UIImage {
        var width: CGFloat
        var height: CGFloat
        var newImage: UIImage
        
        let size = self.size
        let aspectRatio =  size.width/size.height
        
        switch contentMode {
        case .scaleAspectFit:
            if aspectRatio > 1 {                            // Landscape image
                width = dimension
                height = dimension / aspectRatio
            } else {                                        // Portrait image
                height = dimension
                width = dimension * aspectRatio
            }
            
        default:
            fatalError("UIIMage.resizeToFit(): FATAL: Unimplemented ContentMode")
        }
        
        if #available(iOS 10.0, *) {
            let renderFormat = UIGraphicsImageRendererFormat.default()
            renderFormat.opaque = opaque
            let renderer = UIGraphicsImageRenderer(size: CGSize(width: width, height: height), format: renderFormat)
            newImage = renderer.image {
                (context) in
                self.draw(in: CGRect(x: 0, y: 0, width: width, height: height))
            }
        } else {
            UIGraphicsBeginImageContextWithOptions(CGSize(width: width, height: height), opaque, 0)
            self.draw(in: CGRect(x: 0, y: 0, width: width, height: height))
            newImage = UIGraphicsGetImageFromCurrentImageContext()!
            UIGraphicsEndImageContext()
        }
        
        return newImage
    }
}