为UIButton添加模糊效果

der*_*ida 7 uikit swift ios8

如何让按钮背景变得模糊?

我发现这会产生模糊效果:

let blur = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffectStyle.Light))
blur.frame = buttonForDisabling.frame
self.tableView.addSubview(blur) 
Run Code Online (Sandbox Code Playgroud)

这是有效的,但只能使用与我的按钮相同的框架进行模糊处理.我想要一个背景模糊的按钮.在iOS8中可以吗?

Bla*_*ley 16

这可以通过创建模糊并将其插入UIButton的titleLabel下方来完成.禁用用户交互非常重要,以便允许触摸不被视觉效果视图拦截并转发到按钮.

Swift 4.2:

let blur = UIVisualEffectView(effect: UIBlurEffect(style:
            UIBlurEffect.Style.light))
blur.frame = buttonForDisabling.bounds
blur.isUserInteractionEnabled = false //This allows touches to forward to the button.
buttonForDisabling.insertSubview(blur, at: 0)
Run Code Online (Sandbox Code Playgroud)


tuv*_*vok 16

如果您使用带有图像的按钮,请将imageview置于前面:

buttonForDisabling.bringSubview(toFront: buttonForDisabling.imageView!)
Run Code Online (Sandbox Code Playgroud)

或者只使用此扩展程序:

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)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)