Эффект размытия фона UIImageView (Swift 4)

Я пытаюсь добиться этого эффекта размытия с помощью своего UIImageView: введите здесь описание изображения

Я не не, если это возможно. Я пытался играть с UIVisualEffectView и UIBlurEffect, но мне не повезло. Есть идеи, пожалуйста? Спасибо


person Vitalyz123    schedule 04.03.2018    source источник


Ответы (1)


У меня есть пример для NSVisualEffectView. Может быть, вы можете попробовать преобразовать его в 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: я получил этот код из какого-то другого источника (который я забыл).

person triandicAnt    schedule 04.03.2018
comment
Спасибо за ответ! Конечно попробую сделать, но почти все способы разные. - person Vitalyz123; 04.03.2018