Ios 整个视图从左上角开始设置动画
嘿,互联网读者 我正在构建一个小功能,其中我的横幅使用Snapkit和Combine从顶部进行动画制作。在我的Ios 整个视图从左上角开始设置动画,ios,swift,snapkit,Ios,Swift,Snapkit,嘿,互联网读者 我正在构建一个小功能,其中我的横幅使用Snapkit和Combine从顶部进行动画制作。在我的viewDidLoad中,我调用setupobservators,它在下面创建了这个发布者 在我的应用程序中,isShown被切换,以便发布者在第一次看到视图时触发,这不仅会导致横幅,而且会使整个视图从左上角0,0位置进入动画 我知道这是因为我正在调用self.view.layoutifneed(),我只是想知道如何缓解这种情况,以便在没有动画的情况下加载视图,然后显示横幅 谢谢
viewDidLoad
中,我调用setupobservators
,它在下面创建了这个发布者
在我的应用程序中,isShown
被切换,以便发布者在第一次看到视图时触发,这不仅会导致横幅,而且会使整个视图从左上角0,0位置进入动画
我知道这是因为我正在调用self.view.layoutifneed()
,我只是想知道如何缓解这种情况,以便在没有动画的情况下加载视图,然后显示横幅
谢谢
public override func viewDidLoad() {
super.viewDidLoad()
setupObservers()
viewStore.send(.viewDidLoad)
}
从动画块中设置常量
self.banner.snp.updateConstraints {
if isShown {
self.topConstraint.update(offset: 0)
} else {
self.topConstraint.update(offset:-Metrics.bannerHeight)
}
}
UIView.animate(withDuration: Metrics.animationDuration, delay: 0, options: .curveEaseInOut) {
self.view.layoutIfNeeded()
}
不幸的是,这仍然会导致整个视图从左上角进入动画创建约束一次并将其设置为常量。仅请参见edittopConstraint不是典型的
NSLayoutConstraint
,它是SnapKit的ConstraintMacerEditable
类型之一,没有常量
属性。很遗憾,这不起作用。请参见编辑…………谢谢。我也发现了这一点。它仍然在动画中的整个视图,而不仅仅是横幅,然而,很高兴看到你在这里从更好的编程!但是无论如何,请在保护self.initLoadFinished之后首先尝试self.view.layoutifneed()
,这样所有内容都会被布局。然后,照@Sh_Khan下面说的做。哈,谢谢你。小世界
self.banner.snp.updateConstraints {
if isShown {
self.topConstraint.update(offset: 0)
} else {
self.topConstraint.update(offset:-Metrics.bannerHeight)
}
}
UIView.animate(withDuration: Metrics.animationDuration, delay: 0, options: .curveEaseInOut) {
self.view.layoutIfNeeded()
}