gpt4 book ai didi

ios - Swift - 优化 UI 动画淡入淡出

转载 作者:行者123 更新时间:2023-11-30 12:40:40 25 4
gpt4 key购买 nike

我有以下代码,它完全满足我的需要。由于应用程序的性质,我必须专门针对这些 UI 元素,而不是使用 UIView 淡入淡出。

    @IBAction func hidecontrols(_ sender: UIButton) {
UIView.animate(withDuration: 0.5) {
self.brightnesstitle.alpha = 0
self.brightnesslbl.alpha = 0
self.brightnesssldr.alpha = 0
self.kelvintitle.alpha = 0
self.kelvinlbl.alpha = 0
self.kelvinsldr.alpha = 0
self.greentitleminus.alpha = 0
self.greentitleplus.alpha = 0
self.greenzerobtn.alpha = 0
self.greensldr.alpha = 0
self.greensldrdiv.alpha = 0
self.hidecontrolsbtn.alpha = 0
}
}

我想优化它,但我浪费了几个小时的尝试,所以我保持原样。我最初尝试了一个 for 循环,其中将各种 UI 名称放入一个数组中,但无论我尝试什么,它都无法正确传递字符串,并声称 .alpha 不是字符串的成员。

有没有办法为我想要影响的每个 UI 元素分配自定义值,然后为具有该值的每个元素调用淡入淡出动画?

最佳答案

啊哈,我可以想到两种方法:

简单版本。如果上面的所有变量都是 UIView 的实例或 UIView 的子类,那么你可以这样做:

let fadingViews: [UIView] = [brightnesstitle, brightnesslbl, ...]
UIView.animate(withDuration: 0.5) { fadingViews.forEach { $0.alpha = 0 } }

如果其中一些不是 UIView 实例,那么您可以定义这样的协议(protocol)

protocol Fadable {
var alpha: CGFloat { get set }
}

extension UIView: Fadable {}
extension MyClass: Fadabale {}

然后执行

let fadables: [Fadable] = [brightnesstitle, brightnesslbl, ...]
UIView.animate(withDuration: 0.5) { fadingViews.forEach { $0.alpha = 0 } }

关于ios - Swift - 优化 UI 动画淡入淡出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42265229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com