如果单击按钮 - 制作动画以成像 Swift Playgrounds
Posted
技术标签:
【中文标题】如果单击按钮 - 制作动画以成像 Swift Playgrounds【英文标题】:If Button clicked - do animation to image Swift Playgrounds 【发布时间】:2020-05-12 08:01:01 【问题描述】:我的目标很简单。单击按钮时,该按钮应淡出,屏幕上的另一个图像也应淡出。我正在使用 Swift Playgrounds。 我已经让按钮在点击工作时淡出。主要问题是一旦单击按钮,屏幕上的图像就会淡出。
import PlaygroundSupport
import AVFoundation
class MyViewController: UIViewController
override func viewDidLoad()
super.viewDidLoad()
let title = UIImage(named: "Picture1")
let imageView = UIImageView(image: title) //this is the image I want to fade out when the button is clicked
imageView.image = title
imageView.frame.size.width = 570
imageView.frame.size.height = 140
imageView.frame.origin.x = 100
imageView.frame.origin.y = 0
imageView.alpha = 0
let button = UIButton(type: UIButton.ButtonType.custom) as UIButton
let image = UIImage(named: "startbutton4.png") as UIImage?
button.frame = CGRect(x: 265, y: 300, width: 249, height: 85)
button.setImage(image, for: [])
button.contentMode = .center
button.imageView?.contentMode = .scaleAspectFit
button.imageView?.contentMode = .scaleAspectFit
button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
self.view.addSubview(button)
view.addSubview(imageView)
@objc func buttonAction(sender: UIButton)
sender.isHighlighted = false
UIView.animate(withDuration: 1, delay: 1, options: .curveEaseOut, animations:
sender.alpha = 0
, completion: nil) // <--- this right here is the button fading out
let master = MyViewController()
PlaygroundPage.current.liveView = master
如果有人知道如何做到这一点,请告诉我。
【问题讨论】:
【参考方案1】:我的理解是你想隐藏按钮......一旦按钮被隐藏你想显示图像......这是代码......我希望它会有所帮助
func buttonAction(sender: UIButton)
sender.isHighlighted = false
UIView.animate(withDuration: 1, delay: 1, options: .curveEaseOut, animations:
sender.alpha = 0
, completion: success in
if success
UIView.animate(withDuration: 1, delay: 1, options: .curveEaseOut, animations:
imageView.alpha = 1
)
)
【讨论】:
这可行,但问题是该函数不知道 imageView 是什么。由于 imageView 是在 viewDidLoad 函数中声明的。 obj c函数有什么办法知道imageView是什么? 您需要将图像视图作为参数发送或声明外部 didload() 如何在 button.addTarget 中发送第二个参数 您不能发送第二个参数 .. 您需要为 UIButton 子类化这不是一个好方法.. 所以请改用实例变量以上是关于如果单击按钮 - 制作动画以成像 Swift Playgrounds的主要内容,如果未能解决你的问题,请参考以下文章
如何在不制作 IBOutlet 的情况下以编程方式在 Swift 中为 UIView 高度约束设置动画?