2017-02-22 13 views
0

UIImageビューではなく、UIimageにぼかし効果を追加したいと思います。 私はちょうどこのようuiimageビュー にぼかし効果を追加することができます。私は本当にuiimageに追加したい、スイフトでUIImageにぼかし効果を追加するには?

let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.light) 
let blurEffectView = UIVisualEffectView(effect: blurEffect) 
blurEffectView.frame = img.bounds 
blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 
img.addSubview(blurEffectView) 

しかし。なぜなら、テキストでイメージを描く必要があるからです。ここに私の関数はあります:

func textToImageWithPhoto(drawText text: NSString, inImage image: UIImage, atPoint point: CGPoint) -> UIImage { 

    let scale = UIScreen.main.scale 

    UIGraphicsBeginImageContextWithOptions(CGSize.init(width: 375, height: 375), false, scale) 

    image.draw(in: CGRect(origin: CGPoint.init(x: 0, y: -100), size: CGSize(width: 375, height: 375*1.5))) 

    let rect = CGRect(origin: CGPoint.init(x: 0, y: 187.5 - 150/2), size: CGSize.init(width: 375, height: 375)) 
    text.draw(in: rect, withAttributes: textFontAttributes) 

    let newImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    self.saveData(img: newImage!, text: self.quotesTxt.text!) //SAVE CORE DATA 

    return newImage! 
} 

そして、描画関数内にぼかし効果を追加する方法はありますか?

+0

Visiteここで[ぼかし&着色画像((https://developer.apple.com/library/content/samplecode/UIImageEffects/Listings/UIImageEffects_UIImageEffects_h.html#//apple_ref/doc/uid/DTS40013396-UIImageEffects_UIImageEffects_h-DontLinkElementID_8 ) –

+0

新しい画像を返すときに画像にテキストを追加した後、これを行う前に 'blurredImage = UIImageEffects.imageByApplyingLightEffect(to:newImage)' –

+0

@Mukeshありがとうございます!しかし、画像を追加すると画像のサイズが変わります! –

答えて

1
extension UIIMageView { 

    func addBlurEffect(){ 
     //if !UIAccessibilityIsReduceTransparencyEnabled() { 

      GlobalData.effectView.frame = self.bounds 
      GlobalData.effectView.autoresizingMask = [.flexibleWidth , .flexibleHeight] 
      self.addSubview(GlobalData.effectView) 

      UIView.animate(withDuration: 0.3, animations: { 
       GlobalData.effectView.effect = UIBlurEffect(style: .light) 
      }) 
     //} 

    } 

    func removeBlurEffect(){ 
     for subView in self.subviews{ 
      if subView is UIVisualEffectView{ 
       UIView.animate(withDuration: 0.3, animations: { 
        GlobalData.effectView.effect = nil 
       }, completion: { (success:Bool) in 
        subView.removeFromSuperview() 
       }) 

      } 
     } 

    } 

この拡張子を使用してください。それは私の仕事です。私は試してみませんが、あなたはUIImageのように拡張タイプを変えることができます。

+0

OPは既に 'UIImageView'に' blur effect'を追加したくないと言っています –

+0

@DharmeshKheni yup..thatが正しい:( –

関連する問題