我是约束的初学者,最近我开始从事动画工作,我的目标是 iPhone 6s plus。一切都是关于将球从某个 Y 点移动到另一个点..
func animateBall(){
UIView.animateWithDuration(0.5, delay: 0.0000001, options : [.CurveEaseInOut, .TransitionCurlDown,] , animations: {
self.ball1.frame.origin.y = 121.0
self.ball2.frame.origin.y = 175.0
self.ball3.frame.origin.y = 340.0
self.ball4.frame.origin.y = 394.0
self.ball5.frame.origin.y = 447.0
self.ball6.frame.origin.y = 502.0
self.ball7.frame.origin.y = 555.0
self.ball8.frame.origin.y = 585.0
self.ball9.frame.origin.y = 68.0
//
// }
//
} ,completion :{(finished:Bool) in
// the code you put here will be compiled once the animation finishes
self.restoreToNormalBalls()
})
}
func restoreToNormalBalls (){
self.ball1.frame.origin.y = 68
self.ball2.frame.origin.y = 121
self.ball3.frame.origin.y = 175
self.ball4.frame.origin.y = 340
self.ball5.frame.origin.y = 394
self.ball6.frame.origin.y = 447
self.ball7.frame.origin.y = 502
self.ball8.frame.origin.y = 555
self.ball9.frame.origin.y = 15
}
我已将约束设置为适合所有屏幕,但当我点击动画时,它仅适用于 6s Plus。任何帮助使动画在所有屏幕上工作? 谢谢
最佳答案
根据@lubilis 的建议,
首先,为从球到容器 View 上边缘的顶部空间添加约束。
然后将该约束设为@IBOutlet
,假设为outletedConstraintBall1
。
然后在制作动画时,喜欢:
UIView.animateWithDuration(0.5, delay: 0.0000001, options : [.CurveEaseInOut, .TransitionCurlDown,] , animations: {
outletedConstraintBall1.constant = 121
containerView.layoutIfNeeded()
})
重置其位置:
restoreToNormalBalls() {
outletedConstraintBall1.constant = 68
}
关于ios - 动画约束快速适合所有屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37917025/