ios - Picker View 覆盖swift 4.2中模糊效果的值

标签 ios swift uipickerview uiblureffect

我想使用 pickerview 增加或减少照片中的模糊效果级别。即使我降低该值,它也会为其添加连续的模糊效果。我该怎么办?

使用最新的 Swift 和 Xcode

class ViewController: UIViewController,UIPickerViewDelegate,UIPickerViewDataSource {

@IBOutlet var bg: UIImageView!
@IBOutlet var pickView: UIPickerView!

func numberOfComponents(in pickerView: UIPickerView) -> Int {

    return 1
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {

    return arr.count
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    switch arr[row] {
    case "1":
        Blur(blur: 0.3)
    case "2":
        Blur(blur: 0.6)
    case "3":
        Blur(blur: 0.0)
    default:
        print("not change")
    }
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return arr[row]
}
let arr = ["1","2","3"]
override func viewDidLoad() {
    super.viewDidLoad()
    pickView.dataSource = self
    pickView.delegate = self
    // Do any additional setup after loading the view, typically from a nib.
}
func Blur(blur:CGFloat)
{
    let blurEffect = UIBlurEffect(style: UIBlurEffect.Style.light)
    let blurView = UIVisualEffectView(effect: blurEffect)
    blurView.frame = bg.bounds
    blurView.alpha = blur
    self.view.addSubview(blurView)       
}
}

最佳答案

您的 Blur(blur: 0.3) 是一个函数而不是对象类,它将运行而不更改属性。并且您的 func 向您的父 View 添加了一个 subview ,但没有代码行在添加另一个 View 之前将其删除。所以它会堆叠起来。

  1. 删除旧的模糊 subview 然后添加新的。
  2. 首先创建一个默认的模糊 View ,然后更改它的属性。

关于ios - Picker View 覆盖swift 4.2中模糊效果的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53918636/

相关文章:

ios - 在 View 中查找所有 detailDislosureButtons

iphone - UIPopoverController 中的 UIPIckerView

swift - PickerView 在文本字段输入中不显示任何内容

ios - 如何将照片(或视频)从相机转换为 NSData?

ios - 连续旋转不居中

ios - 为什么直接将对象分配给属性时 ARC 无法正常工作

ios - 将数据传回父 Controller 以进行 iOS 开发

ios - 你如何从 Swift 或 Objective C 中的 UIImage 获取 URL?

ios - 在 UIWebView 上查看下载的 PDF

ios - 使用 UIPickerView 上第一个组件的值更改其余组件