Efek Blur UIImageView Latar Belakang (Swift 4)

Saya mencoba mencapai efek buram ini dengan UIImageView saya: masukkan deskripsi gambar di sini

Saya tidak akan melakukannya jika memungkinkan. Saya sudah mencoba bermain dengan UIVisualEffectView dan UIBlurEffect, tapi saya tidak berhasil. Ada ide? Terima kasih


person Vitalyz123    schedule 04.03.2018    source sumber


Jawaban (1)


Saya punya contoh untuk NSVisualEffectView. Mungkin Anda bisa mencoba mengubahnya menjadi UIVisualEffectView:

func applyBlurToWindow() {
    // define the visual effect view
    self.blurView = NSVisualEffectView(frame: NSRect(x: 0, y: 0, width: (NSApplication.shared.windows.first?.frame.width)!, height: (NSApplication.shared.windows.first?.frame.height)!))
    // this is default value but is here for clarity
    blurView?.blendingMode = NSVisualEffectView.BlendingMode.behindWindow
    // set the background to always be the dark blur
    blurView?.material = NSVisualEffectView.Material.mediumLight
    blurView?.wantsLayer = true
    blurView?.layer?.backgroundColor = NSColor.clear.cgColor
    blurView?.layer?.masksToBounds = true
    blurView?.layerUsesCoreImageFilters = true
    blurView?.layer?.needsDisplayOnBoundsChange = true
    let satFilter = CIFilter(name: "CIColorControls")
    satFilter?.setDefaults()
    satFilter?.setValue(NSNumber(value: 0.0), forKey: "inputSaturation")
    let blurFilter = CIFilter(name: "CIGaussianBlur")
    blurFilter?.setDefaults()
    blurFilter?.setValue(NSNumber(value: 2.0), forKey: "inputRadius")
    blurView?.layer?.backgroundFilters = [satFilter!, blurFilter!]

    // set it to always be blurry regardless of window state
    if let window = NSApplication.shared.windows.first {
        window.acceptsMouseMovedEvents = true
        blurView?.state = .active
        window.contentView?.addSubview(blurView!)
    }
}

func removeBlurredView(){
    blurView?.state = .inactive
    blurView?.layer?.backgroundFilters = nil
    self.blurView?.removeFromSuperview()
}

PS: Saya mendapat kode ini dari sumber lain (yang saya lupa).

person triandicAnt    schedule 04.03.2018
comment
Terimakasih untuk jawaban! Tentu saja saya akan mencoba melakukannya, tetapi hampir semua metode berbeda. - person Vitalyz123; 04.03.2018