如果单击按钮 - 制作动画以成像 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 高度约束设置动画?

Swift - 按下按钮时,如果动画已经在播放,则将其重置为开始

jQuery,沿弧线制作动画

如何在android中制作这样的动画?

在 SwiftUi 中禁用默认按钮单击动画

如何使用swift 3为按钮设置动画以淡出然后淡入