2017-02-22 9 views
0

Я хотел бы добавить эффект размытия в UIimage, а не UIImage View. я могу добавить эффект размытия в UIImage зрения так же, как это:Как добавить эффект размытия в UIImage с Swift?

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

Но, я действительно хочу, чтобы добавить в UIImage. Потому что мне нужно рисовать изображение с текстом. так вот вот моя функция:

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 уже упоминал, что он не хочет добавлять 'blur effect' в' UIImageView' –

+0

@DharmeshKheni yup..thth's right :( –

Смежные вопросы