将 UIImageView 设置为模糊的初始状态
Setting a UIImageView to an initial state of blurred
我正在尝试对 UIViewController
上的背景图像进行初始模糊处理。当调用 @IBAction
时,我想取消模糊 backgroundImage
。我可以让图像最初模糊,但如果我最初模糊它,我就无法摆脱模糊。但是,如果我最初不模糊 backgroundImage
,我的方法会通过在模糊图像和未模糊图像之间切换来按预期工作。
这些是我 UIViewController
class.
上的相关变量
@IBOutlet weak var backgroundImage: UIImageView!
// I also leave this hanging around so I can add/remove it as needed
var blurView = UIVisualEffectView(effect: UIBlurEffect(style: .light))
当视图加载时,我最初希望 backgroundImage
在它上面有一个 UIVisualEffectView
。我最初尝试在 viewDidLoad
中调用 toggleBlurView
,但 UIBlurEffect
的显示已关闭,因此我在 viewDidLayoutSubviews
中添加了 toggleBlurView
的代码,这修复了那个问题。
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
// if I comment this out, the toggleBlurView() method works as desired
toggleBlurView()
}
这是我的 toggleBlurView
方法。
func toggleBlurView() {
// if there's a blurView, remove it...
if blurView.isDescendant(of: backgroundImage) {
blurView.removeFromSuperview()
}
// otherwise, add blurView to backgroundImage
else {
blurView = UIVisualEffectView(effect: UIBlurEffect(style: .light))
blurView.frame = backgroundImage.bounds
backgroundImage.addSubview(blurView)
}
}
我有一个 @IBAction
,当调用它时,它也会运行 toggleBlurView
方法。
@IBAction func playFrequency(_ sender: UIButton) {
// do stuff
toggleBlurView()
}
我的代码没有崩溃,但我得不到想要的结果。我不确定我是发现了错误还是做错了什么。我打赌后者。感谢您的阅读,欢迎就如何将图像设置为模糊的初始状态提出建议。
我得到了下面的代码,正如你所希望的那样。我更改了 toggleBlurView
函数,使其更加灵活,但这应该不会影响功能。
//
// ViewController.swift
// tableviewheader-test
//
// Created by Forest Kunecke on 3/29/17.
// Use this code for freeeeee!!!! Free as in free beer!!
//
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var myImage: UIImageView!
var blurView = UIVisualEffectView(effect: UIBlurEffect(style: .light))
override func viewDidLoad() {
super.viewDidLoad()
toggleBlurView(myImage)
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func toggleBlur(_ sender: Any) {
toggleBlurView(myImage)
}
func toggleBlurView(_ imageView: UIImageView) {
// if there's a blurView, remove it...
if blurView.isDescendant(of: imageView) {
blurView.removeFromSuperview()
}
// otherwise, add blurView to backgroundImage
else {
blurView = UIVisualEffectView(effect: UIBlurEffect(style: .light))
blurView.frame = imageView.bounds
imageView.addSubview(blurView)
}
}
}
这是我的故事板的屏幕截图:
我正在尝试对 UIViewController
上的背景图像进行初始模糊处理。当调用 @IBAction
时,我想取消模糊 backgroundImage
。我可以让图像最初模糊,但如果我最初模糊它,我就无法摆脱模糊。但是,如果我最初不模糊 backgroundImage
,我的方法会通过在模糊图像和未模糊图像之间切换来按预期工作。
这些是我 UIViewController
class.
@IBOutlet weak var backgroundImage: UIImageView!
// I also leave this hanging around so I can add/remove it as needed
var blurView = UIVisualEffectView(effect: UIBlurEffect(style: .light))
当视图加载时,我最初希望 backgroundImage
在它上面有一个 UIVisualEffectView
。我最初尝试在 viewDidLoad
中调用 toggleBlurView
,但 UIBlurEffect
的显示已关闭,因此我在 viewDidLayoutSubviews
中添加了 toggleBlurView
的代码,这修复了那个问题。
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
// if I comment this out, the toggleBlurView() method works as desired
toggleBlurView()
}
这是我的 toggleBlurView
方法。
func toggleBlurView() {
// if there's a blurView, remove it...
if blurView.isDescendant(of: backgroundImage) {
blurView.removeFromSuperview()
}
// otherwise, add blurView to backgroundImage
else {
blurView = UIVisualEffectView(effect: UIBlurEffect(style: .light))
blurView.frame = backgroundImage.bounds
backgroundImage.addSubview(blurView)
}
}
我有一个 @IBAction
,当调用它时,它也会运行 toggleBlurView
方法。
@IBAction func playFrequency(_ sender: UIButton) {
// do stuff
toggleBlurView()
}
我的代码没有崩溃,但我得不到想要的结果。我不确定我是发现了错误还是做错了什么。我打赌后者。感谢您的阅读,欢迎就如何将图像设置为模糊的初始状态提出建议。
我得到了下面的代码,正如你所希望的那样。我更改了 toggleBlurView
函数,使其更加灵活,但这应该不会影响功能。
//
// ViewController.swift
// tableviewheader-test
//
// Created by Forest Kunecke on 3/29/17.
// Use this code for freeeeee!!!! Free as in free beer!!
//
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var myImage: UIImageView!
var blurView = UIVisualEffectView(effect: UIBlurEffect(style: .light))
override func viewDidLoad() {
super.viewDidLoad()
toggleBlurView(myImage)
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func toggleBlur(_ sender: Any) {
toggleBlurView(myImage)
}
func toggleBlurView(_ imageView: UIImageView) {
// if there's a blurView, remove it...
if blurView.isDescendant(of: imageView) {
blurView.removeFromSuperview()
}
// otherwise, add blurView to backgroundImage
else {
blurView = UIVisualEffectView(effect: UIBlurEffect(style: .light))
blurView.frame = imageView.bounds
imageView.addSubview(blurView)
}
}
}
这是我的故事板的屏幕截图: