在我的应用程序中,我想在override 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)
但是对于这两种方式我都面临同样的问题。没运气!!
这是我的错误,我没有以适当的方式思考解决它。无论如何,如果有人遇到类似的问题,那么这个答案可能会对他们有所帮助。我刚刚更改了当前的autolayout
来解决这个问题。由于animationView
和topView
之间的约束,这个问题正在发生。这两个视图之间的距离约束是固定的,这就是为什么当动画发生时它正在调整animationView
以调整约束。所以我的解决方案是使动画视图高度约束固定并将优先级required
更改为low
之间的距离约束故事板中的animationView
和topView