当前位置: 首页 > 知识库问答 >
问题:

整个视图从左上角开始动画化

越星晖
2023-03-14

嘿,这位网络读者,

我正在构建一个小功能,其中我的横幅从顶部使用Snapkit和Combine动画。在我的ViewDidLoad中,我调用了SetupObServers,它在下面创建了这个发布服务器。

在我的应用程序的深处,isshowed被切换,这样发布者就会在第一次看到视图时触发,这不仅会导致横幅,还会导致整个视图从左上方0,0的位置动画化。

我知道这是因为我调用了self.view.layoutifneed(),我只是很好奇如何减轻这种情况,这样我就可以在没有动画的情况下加载视图,然后显示横幅。

谢谢!

    public override func viewDidLoad() {
        super.viewDidLoad()

        setupObservers()

        viewStore.send(.viewDidLoad)
    }
        viewStore.publisher
            .banner
            .isShown
            .sink { isShown in
                guard self.initLoadFinished else { return }

                UIView.animate(withDuration: Metrics.animationDuration, delay: 0, options: .curveEaseInOut) {
                    self.banner.snp.updateConstraints {
                        if isShown {
                            self.topConstraint = $0.top.equalToSuperview()
                        } else {
                            self.topConstraint = $0.top.equalToSuperview().offset(-Metrics.bannerHeight)
                        }
                    }
                    self.view.layoutIfNeeded()
                }
            }.store(in: &cancellables)

共有1个答案

祝花蜂
2023-03-14

在动画块中设置常量

self.banner.snp.updateConstraints {
    if isShown {
        self.topConstraint.constant = 0
    } else {
        self.topConstraint.constant = -Metrics.bannerHeight
    }
}  
UIView.animate(withDuration: Metrics.animationDuration, delay: 0, options: .curveEaseInOut) { 
    self.view.layoutIfNeeded() 
}
 类似资料:
  • 当前为 5.4 版本,稍后将升级到 5.5。在 5.5 中,本节内容被拆分成了多个小节。 使用动画视图 在 Unity 中,动画视图用于预览和编辑游戏对象的动画剪辑。动画视图可以通过菜单 Window -> Animation 打开。 查看游戏对象上的动画 动画视图和层级视图、场景视图以及检视视图紧密耦合。类似于检视视图,动画视图将显示当前选中对象的动画的时间轴和关键帧。你也可以在层级视图或场景视

  • 问题内容: 我创建了一个简单的弹跳动画,该动画将应用于元素的状态: 动画效果很好,但是当您从元素中删除光标时,动画会突然停止。无论如何,是否有强迫它继续设置的迭代次数(即使鼠标已经退出)?基本上,我在这里寻找的是由状态触发的动画。我不是 在寻找 JavaScript解决方案。无论如何,我还没有看到在规范中执行此操作,但是也许我错过了一个明显的解决方案? 问题答案: 恐怕解决此问题的唯一方法是使用一

  • 我试图将一个视图从右向左滑动,点击一个按钮,它的可见性就消失了,点击另一个按钮,它的可见性就消失了。我尝试了以下解决方案。但是它要求视图是可见的,并且它会将视图从一个位置滑动到另一个位置。我想要一个滑动效果,就像那样,但是要有。我怎样才能做到这一点?

  • 我有这样的看法: 我想创建简单而清晰的动画,将alpha(淡入)更改为容器顶部,从最底部(容器)为ImageView滑动。 我在stackoverflow中找到了很多解决方案,当你指定幻灯片的具体高度时。有没有一个从下到上的简单解决方案?

  • 可将PS Vita的开始画面恢复为购买时的状态。 轻触[初始化]>[初始化开始画面的图像]>[初始化]。

  • 动画视图指南 在 Unity 中的动画视图中,你可以直接创建和修改动画剪辑。动画视图的功能强大、操作简单,被设计为外部 3D 动画软件的替代品。除了运动动画外,编辑器还可以为材质和组件添加动画,以及基于动画事件修改动画剪辑,动画事件是一些在特定时间点被调用的函数。 更多相关信息请阅读 动画导入 和 动画脚本。 本章接下来的内容将详细介绍动画视图的个个方面。