用于将动态视图捕捉到屏幕顶部、底部或中间的 UIFieldBehaviour
UIFieldBehaviour for snapping dynamic view to top, bottom or middle of screen
我使用的是可拖动视图,它是屏幕的宽度和高度,可以根据平移手势在屏幕上上下移动。
当平移手势结束时,我希望它根据平移结束时视图所在的位置捕捉到屏幕的顶部、中间或底部三个不同的 y 位置。我想要像 UIFieldBehaviour 这样的东西,其中一个力将它动画到正确的位置。
在顶部时将显示整个视图,而在底部时只应显示 30px,可以说其余视图将在屏幕下方。
因此我需要强制只对视图的顶部 30px 起作用。
力场行为(画得不好请见谅):
快照行为:
关于如何实现这一点有什么想法吗?
这比我想象的要容易。
我正在使用新的 UIViewPropertyAnimator,当 pan .ended 时,我只是通过将目标 y 位置与 UIScreen 的高度进行比较来检查目标 y 位置是否应该捕捉到顶部、底部或中间。
animator!.addAnimations({
print(target.frame.origin.y)
if (target.frame.origin.y > UIScreen.main.bounds.height / 2) {
if (target.frame.origin.y > (UIScreen.main.bounds.height - 50)) {
target.frame = CGRect(x: 0, y: UIScreen.main.bounds.height - 25, width: self.view.frame.width, height: self.view.frame.height)
} else {
target.frame = CGRect(x: 0, y: UIScreen.main.bounds.height - 95, width: self.view.frame.width, height: self.view.frame.height)
}
} else {
target.frame = CGRect(x: 0, y: 120, width: self.view.frame.width, height: self.view.frame.height)
}
})
animator!.startAnimation()
我使用的是可拖动视图,它是屏幕的宽度和高度,可以根据平移手势在屏幕上上下移动。
当平移手势结束时,我希望它根据平移结束时视图所在的位置捕捉到屏幕的顶部、中间或底部三个不同的 y 位置。我想要像 UIFieldBehaviour 这样的东西,其中一个力将它动画到正确的位置。
在顶部时将显示整个视图,而在底部时只应显示 30px,可以说其余视图将在屏幕下方。 因此我需要强制只对视图的顶部 30px 起作用。
力场行为(画得不好请见谅):
快照行为:
关于如何实现这一点有什么想法吗?
这比我想象的要容易。 我正在使用新的 UIViewPropertyAnimator,当 pan .ended 时,我只是通过将目标 y 位置与 UIScreen 的高度进行比较来检查目标 y 位置是否应该捕捉到顶部、底部或中间。
animator!.addAnimations({
print(target.frame.origin.y)
if (target.frame.origin.y > UIScreen.main.bounds.height / 2) {
if (target.frame.origin.y > (UIScreen.main.bounds.height - 50)) {
target.frame = CGRect(x: 0, y: UIScreen.main.bounds.height - 25, width: self.view.frame.width, height: self.view.frame.height)
} else {
target.frame = CGRect(x: 0, y: UIScreen.main.bounds.height - 95, width: self.view.frame.width, height: self.view.frame.height)
}
} else {
target.frame = CGRect(x: 0, y: 120, width: self.view.frame.width, height: self.view.frame.height)
}
})
animator!.startAnimation()