Swift UIView从下到上的转换问题
在我的应用程序中,我想在Swift UIView从下到上的转换问题,swift,uiview,swift4.2,uiviewanimationtransition,Swift,Uiview,Swift4.2,Uiviewanimationtransition,在我的应用程序中,我想在覆盖func viewDidLayoutSubviews()中从下到上设置视图动画。到目前为止,我已经通过这种方式从底部传输视图,但在不同的设备中,它显示的UI不同。UIView转换正在工作,但除iPhone XS外,视图未从底部完全转换。到目前为止,我采用了以下两种方式: 第一步: let currentFrame = self.animationVIew.frame self.animationVIew.frame = CGRect(x: 0, y:
覆盖func viewDidLayoutSubviews()
中从下到上设置视图动画。到目前为止,我已经通过这种方式从底部传输视图,但在不同的设备中,它显示的UI不同。UIView转换正在工作,但除iPhone XS外,视图未从底部完全转换。到目前为止,我采用了以下两种方式:
第一步:
let currentFrame = self.animationVIew.frame
self.animationVIew.frame = CGRect(x: 0, y: self.view.frame.height, width: currentFrame.size.width, height: currentFrame.size.height)
UIView.animate(withDuration: 1.0) {
self.animationVIew.frame = currentFrame
self.loadViewIfNeeded()
}
UIView.transition(with: animationVIew,
duration: 0.5,
options: [.transitionFlipFromBottom],
animations: {
},
completion: nil)
第二步:
let currentFrame = self.animationVIew.frame
self.animationVIew.frame = CGRect(x: 0, y: self.view.frame.height, width: currentFrame.size.width, height: currentFrame.size.height)
UIView.animate(withDuration: 1.0) {
self.animationVIew.frame = currentFrame
self.loadViewIfNeeded()
}
UIView.transition(with: animationVIew,
duration: 0.5,
options: [.transitionFlipFromBottom],
animations: {
},
completion: nil)
但无论从哪方面来说,我都面临着同样的问题。不走运
这是我的错误,我没有用正确的方法来解决它。无论如何,如果有人面临类似的问题,那么这个答案可能会对他们有所帮助。我刚刚更改了当前的
autolayout
以解决此问题。发生此问题是因为animationView
和topView
之间存在约束。这两个视图之间的距离约束是固定的,这就是为什么当动画发生时,它会调整animationView
的大小以调整约束。因此,我的解决方案是固定动画视图高度约束,并将中animationView
和topView
之间距离约束的优先级required
更改为low
情节提要在上下文中显示代码。很大程度上取决于代码运行的位置。例如,如果您在viewdiload
中获取帧,则大多数情况下您都会得到错误的答案。我在override func viewdilayoutsubviews()
中编写此代码很好,但由于该信息不在问题中,因此这不是一个公平的答案。好的,下次我将尝试添加有关该问题的更多细节。