2014-08-28 7 views
4

Как я могу сделать фон кнопки размытым?Добавить эффект размытия в UIButton

Ill нашел, чтобы получить эффект размытия с этим:

let blur = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffectStyle.Light)) 
blur.frame = buttonForDisabling.frame 
self.tableView.addSubview(blur) 

Это работает, но только делает размытие с той же рамке, как моя кнопка. Я хотел бы иметь кнопку с размытым фоном. Возможно ли это в iOS8?

ответ

9

Это можно сделать, создав размытие, как вы это делали, и вставив его под названием Label UIButton. Важно отключить взаимодействие пользователя, чтобы позволить касаниям не перехватываться визуальным эффектом и пересылаться на кнопку.

let blur = UIVisualEffectView(effect: UIBlurEffect(style: 
    UIBlurEffectStyle.Light)) 
blur.frame = buttonForDisabling.bounds 
blur.userInteractionEnabled = false //This allows touches to forward to the button. 
buttonForDisabling.insertSubview(blur, atIndex: 0) 
+0

Спасибо - хорошая идея! – derdida

+4

Это не работает, когда кнопка имеет изображение ... – Atomix

1

Если вы используете кнопку с изображением, довести ImageView на фронт:

buttonForDisabling.bringSubview(toFront: buttonForDisabling.imageView!) 

или просто использовать это расширение:

import Foundation 
import UIKit 

extension UIButton 
{ 
    func addBlurEffect() 
    { 
     let blur = UIVisualEffectView(effect: UIBlurEffect(style: .light)) 
     blur.frame = self.bounds 
     blur.isUserInteractionEnabled = false 
     self.insertSubview(blur, at: 0) 
     if let imageView = self.imageView{ 
      self.bringSubview(toFront: imageView) 
     } 
    } 
} 
Смежные вопросы