【问题标题】:UIImageView AspectFill failingUIImageView AspectFill 失败
【发布时间】:2016-07-10 21:38:38
【问题描述】:

我正在以编程方式渲染 16:9 像素图像,然后使用 UIImageViewkCAFilterNearest 过滤器和 .ScaleAspectFill 内容模式将其显示为背景图像。我得到的结果是这样的:

在图片上,您可以看到,无论出于何种原因,它都会将图片完全正确地缩放,但稍微向上移动(例如,半个缩放像素)并在底部留下一条线,该线属于 UIImageView图像显示在(这是UIViewController 上的唯一视图,其背景颜色为“海军蓝”)。

考虑到我使用UIScreen.mainScreen().bounds 矩形作为UIImageView,这可能是什么原因?

附: ScaleToFill 内容模式给出了相同的结果(底部的行仍然存在)

【问题讨论】:

    标签: ios uiimageview calayer


    【解决方案1】:

    我使用一个函数来调整图像的大小以适应屏幕

    fnc imageResize (imageObj:UIImage, sizeChange:CGSize)-> UIImage{
    
       let hasAlpha = false
       let scale: CGFloat = 0.0 // Automatically use scale factor of main screen
    
       UIGraphicsBeginImageCOntextWithOptions(sizeChange, !hasAlpha, scale)
       imageObj.drawInRect(CGRect(origin: CGPointZero, size : sizeChange))
    
       let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
       retunr scaledImage
    }
    

    打电话

    let mainScreenSize: CGRect = UIScreen.mainScreen().bounds
    let image: UIImage! = self.imageResize(UIImage(named: "IMAGE_NAME")!, sizeChange: CGSizeMake(mainScreenSize.width, mainScreenSize.height))
    

    我使用的初始图像也是 16:9 比例

    【讨论】:

    • 这并不能完全回答我的问题,我知道如何模拟修复,但我感谢您的努力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    相关资源
    最近更新 更多