2015-04-22 59 views
1

我有下面的代码来模糊UIImageView中的图像。然后它将该图像放入UIImageView中。 在应用模糊效果之前,图像剪辑被设置为ScaleAspectFill,但是一旦应用效果,它就会延伸图像。我哪里错了?Blur UIImage not clipping(Swift)

感谢

let rectangle = UIImageView(frame: CGRectMake(xPosPix+100, yPosPix, widthPix, heightPix)) 

rectangle.contentMode = UIViewContentMode.ScaleAspectFill 
rectangle.frame = CGRectMake(xPosPix+100, yPosPix, widthPix, heightPix) 
rectangle.layer.opacity = opacity 
rectangle.layer.cornerRadius = cornerRadius 
rectangle.clipsToBounds = true 
self.view.addSubview(rectangle) 

var image = rectangle.image 
var imageToBlur = CIImage(image: image) 
var blurfilter = CIFilter(name: "CIGaussianBlur") 
blurfilter.setValue(imageToBlur, forKey: "inputImage") 
var resultImage = blurfilter.valueForKey("outputImage") as! CIImage 
var blurredImage = UIImage(CIImage: resultImage) 
rectangle.layer.cornerRadius = cornerRadius 
rectangle.clipsToBounds = true 
rectangle.image = blurredImage 
+0

请问为什么不只是使用内置的“BlurEffectView”? – LinusGeffarth

+0

我正在使用Parse.com,我需要使用Parse.com中的图像创建效果 –

+0

那么,你仍然可以使用内置的。只需将BlurView放在更高的z上。 – LinusGeffarth

回答

0

我想你可能想

rectangle.layer.masksToBounds = true; 

而不是第二

rectangle.clipsToBounds = true 

此外,如果你使用的是layoutConstraints,他们喜欢圆角半径的混乱。如果是这种情况,请尝试在layoutSubviews中设置角落半径属性

+0

它似乎是导致问题的'ScaleAspectFill'部分。它正在拉伸/挤压图像,而不是像通常那样将其贴合到最短边。 –

+0

我可能是错的,但在我看来,你正在寻找'.ScaleAspectFit'而不是'.ScaleAspectFill'? –