gpt4 book ai didi

ios - CAAnimation:将 View 的 alpha 与表示层的不透明度同步

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:07:51 27 4
gpt4 key购买 nike

我正在使用 CAKeyframeAnimation 为 View 层的 opacity 设置动画,当应用程序进入后台时,动画被移除,但我需要将 View 的 alpha 设置为和动画一样,我应该怎么做:

view.alpha = view.layer.presentationLayer.opacity

???

谢谢!

更新:

我有三个相互重叠的标签,我使用关键帧动画通过不同的关键帧值(对于 opacity)为它们的 opacity 设置动画,以模仿交叉淡入淡出动画。问题是当应用程序进入后台时,动画被删除(根据 https://forums.developer.apple.com/thread/15796 )所以它们都有 alpha 1 并且彼此重叠,这就是为什么我想将 View 与其表示层同步。

最佳答案

如果目标是在应用程序进入后台时捕获不透明度,您可以为UIApplicationDidEnterBackground添加一个观察者,捕获不透明度,取消动画,并设置alpha。例如,在 Swift 中:

class ViewController: UIViewController {

@IBOutlet weak var viewToAnimate: UIView!

private var observer: NSObjectProtocol!

override func viewDidLoad() {
super.viewDidLoad()

observer = NotificationCenter.default.addObserver(forName: .UIApplicationDidEnterBackground, object: nil, queue: .main) { [weak self] notification in
if let opacity = self?.viewToAnimate.layer.presentation()?.opacity {
self?.viewToAnimate.layer.removeAllAnimations()
self?.viewToAnimate.alpha = CGFloat(opacity)
}
}
}

deinit {
NotificationCenter.default.removeObserver(observer)
}

// I'm just doing a basic animation, but the idea is the same whatever animation you're doing

@IBAction func didTapButton(_ sender: Any) {
UIView.animate(withDuration: 10) {
self.viewToAnimate.alpha = 0
}
}

}

如果您的目标是即使应用程序终止也能记住它,那么您需要将其保存在持久性存储中。但是,如果您的目标只是在应用程序暂停和/或在后台运行时设置 alpha,则以上内容就足够了。

关于ios - CAAnimation:将 View 的 alpha 与表示层的不透明度同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46336033/

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