Добавить эффект размытия в UIButton

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

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

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

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

2 ответов


Это можно сделать, создав размытие, как вы это сделали, и вставив его под заголовком 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)

Если вы используете кнопку с изображением, выведите 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)
        }
    }
}