模糊效果应用后,uiimageviewcontentmode不工作



我试图将UIImageView的图像属性设置为我使用CoreImage模糊的图像。代码可以完美地处理未过滤的图像,但是当我将背景图像设置为过滤后的图像时,contentMode似乎停止为UIImageView工作-而不是方面填充,图像变得垂直拉伸。除了在代码中设置contentMode之外,我还在故事板中设置了它,但结果是相同的。

我使用Swift 2/Xcode 7。

func updateBackgroundImage(image: UIImage) {
    backgroundImage.contentMode = .ScaleAspectFill
    backgroundImage.layer.masksToBounds = true
    backgroundImage.image = blurImage(image)
}
func blurImage(image: UIImage) -> UIImage {
    let imageToBlur = CIImage(image: image)!
    let blurfilter = CIFilter(name: "CIGaussianBlur")!
    blurfilter.setValue(10, forKey: kCIInputRadiusKey)
    blurfilter.setValue(imageToBlur, forKey: "inputImage")
    let resultImage = blurfilter.valueForKey("outputImage") as! CIImage
    let croppedImage: CIImage = resultImage.imageByCroppingToRect(CGRectMake(0, 0, imageToBlur.extent.size.width, imageToBlur.extent.size.height))
    let blurredImage = UIImage(CIImage: croppedImage)
    return blurredImage
}

为什么用CIImage过滤导致我的图像忽略contentMode,我如何解决这个问题?

解决方案是替换您的行:

let blurredImage = UIImage(CIImage: croppedImage)

有这两行:

let context = CIContext(options: nil)
let blurredImage = UIImage (CGImage: context.createCGImage(croppedImage, fromRect: croppedImage.extent))
那么你的完整的blurImage函数应该是这样的:
func blurImage(image: UIImage) -> UIImage {
    let imageToBlur = CIImage(image: image)!
    let blurfilter = CIFilter(name: "CIGaussianBlur")!
    blurfilter.setValue(10, forKey: kCIInputRadiusKey)
    blurfilter.setValue(imageToBlur, forKey: "inputImage")
    let resultImage = blurfilter.valueForKey("outputImage") as! CIImage
    let croppedImage: CIImage = resultImage.imageByCroppingToRect(CGRectMake(0, 0, imageToBlur.extent.size.width, imageToBlur.extent.size.height))
    let context = CIContext(options: nil)
    let blurredImage = UIImage (CGImage: context.createCGImage(croppedImage, fromRect: croppedImage.extent))
    return blurredImage
}

相关内容

  • 没有找到相关文章

最新更新