我的xcode项目中遇到了一些问题,拖动时UIView的大小发生了变化。请查看此GIF,您将明白我的意思:
我正在使用panGestureRecognizer对其进行动画处理。我已经为x和y手势设置了一大堆动画,并且问题似乎出现在手势处理程序的.changed方法中(请原谅我对正确术语的无知,但这仍然是新知识)
动画效果非常好,当我执行.changed动画时,似乎只是对dialogView(模态)进行了调整。
所以这是我用来拖动dialogView的动画的代码:
if gesture.state == .changed {
if velocity.x > 100 {
UIView.animate(withDuration: 0.3, animations: {
self.dialogView.transform = CGAffineTransform(rotationAngle: 50)
}) { (completed) in
}
}
if velocity.x < -50 {
UIView.animate(withDuration: 0.3, animations: {
self.dialogView.transform = CGAffineTransform(rotationAngle: -50)
}) { (completed) in
}
}
}
它旋转,我很高兴我能使它工作。
仅出于上下文考虑,这是我将所有动画放入其中的手势功能的开始:
@objc func panGestureRecognizerAction(_ gesture: UIPanGestureRecognizer) {
let translation = gesture.translation(in: view)
let velocity = gesture.velocity(in: view)
view.frame.origin = translation
dialogVIew是具有垂直堆栈视图的UIView。 (屏幕截图随附于模态视图控制器的情节提要。
Task Detail View Controller Storyboard
我在这里想念什么吗?非常感谢任何建议。
答案 0 :(得分:0)
我发现了问题。似乎将dialogView顶部的自动布局约束设置为安全区域是问题所在。我更改为相对于超级视图而言,从而解决了该问题。感谢@ E.coms和@BaseZen指出自动布局必须成为问题。现在,我将其设置为相对于“视图”而不是“安全区域”,它可以正常工作。非常感谢。