2015-04-22 62 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'? –