ios - 动画显示按钮

标签 ios swift xcode

我正在尝试创建一个基本动画。我需要触摸一个按钮来隐藏或显示。

我写了这段代码来点击屏幕:

func visibleControlButton(_ sender: UITapGestureRecognizer) {
    if (backButton!.isHidden) {
        _UIButtonHiddenAnimation.hiddenAnimation(button: self.backButton!, hide: false)
    } else {
        _UIButtonHiddenAnimation.hiddenAnimation(button: self.backButton!, hide: true)
    }
}

定义_UIButtonHiddenAnimation:

 class _UIButtonHiddenAnimation {
    class func hiddenAnimation(button: UIButton, hide: Bool) {
        UIView.animate(withDuration: 0.2,
                       animations: {
                            hide ? (button.alpha = 0) : (button.alpha = 1.0)
                        },
                       completion: {
                            finished in hide ? (button.isHidden = true) : (button.isHidden = false)
                        })
    }
}

动画只是隐藏按钮。如何制作按钮的动画外观?

最佳答案

问题是,如果按钮被隐藏,您将 alpha 动画设置为 1,但我们看不到它 — 因为按钮被隐藏了!然后将 isHidden 设置为 false,按钮就会跳转到 View 中。

解决方案:忘记所有关于 isHidden 的事情,只改变 alpha — 然后改变你的 if 测试以匹配你对按钮所做的事情,即简单地测试它的 alpha 值。因此(边走边整理):

class _UIButtonHiddenAnimation {
    class func hiddenAnimation(button: UIButton, hide: Bool) {
        UIView.animate(withDuration: 0.2, animations: {
            button.alpha = hide ? 0 : 1.0
        })
    }
}

func visibleControlButton(_ sender: UITapGestureRecognizer) {
    _UIButtonHiddenAnimation.hiddenAnimation(
        button: self.backButton!, hide: backButton!.alpha > 0.1)
}

关于ios - 动画显示按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41466952/

相关文章:

objective-c - 有没有检查 UIViewController 是否出现的好方法?

iphone - 使用 iOS5 的 XCode 编译现有的 Lua 应用程序

ios - 我可以选择性地 ClipToBounds 吗?

ios - 在自定义类中呈现 UIDocumentInteractionController 的问题

ios - 如何向我的 iOS 应用程序添加 ScrollView ?

ios - 如何更改 CAShapeLayer alpha/opacity 值?

swift - 将 FLEX 与 Swift 项目结合使用

ios - 如何使用 SwiftUI 调用电话

iphone - 如何更改 UILabel/UIFont 的字母间距?

ios - Swift 从 iBooks 粘贴到 Xcode Playground 不起作用