几个小时以来,我一直试图解决最小的动画故障。我的代码成功地将视图移出屏幕,然后将其重新设置为动画。它使x协调正确,但Y轴具有我不理解的行为。这是代码:
func listTrans_slideIn (slideFrom: String) {
//var newFrame = tableView.frame
tableView.frame.origin.x = 1000
//tableView.frame.origin.y = 100
print("Table pushed to side")
UIView.animateKeyframesWithDuration(1.375 /*Total*/, delay: 0.0, options: UIViewKeyframeAnimationOptions.CalculationModeLinear, animations: {
UIView.addKeyframeWithRelativeStartTime(0.0, relativeDuration: 1/1, animations:{
self.tableView_toTLG_Top.constant = 130
self.tableView_toSV_Left.constant = 0
self.tableView_toSV_Right.constant = 0
self.setupView()
//newFrame.origin.y = self.hdrBox.frame.height+50
//newFrame.origin.x = 0
//self.tableView.frame = newFrame
self.tableView.layoutIfNeeded()
})
},
completion: { finished in
if (!finished) { return }
})
}
奇怪的行为是,如果我将正确的y坐标放在动画关键帧中,它会过高,但会在正确的坐标处稳定下来。如果我输入一个太低的y坐标,它会在正确的高度进入,但然后稳定得太低。
正如您所看到的,我尝试过使用框架和约束。我试过改变屏幕移动的高度,但这似乎没有效果。
任何人都知道为什么我花了半天时间看到这个错误?
答案 0 :(得分:0)
你可以尝试这样的事情:
// Use the same value here and below, it moves it out of the screen
self.tableView.center.y -= 500
UIView.animateWithDuration(1.0, animations: { () -> Void in
// Then it comes back
self.tableView.center.y += 500
})
答案 1 :(得分:0)
这结果是一个操作顺序问题。解决方案要求我将动画移动到viewDidAppear中。
其他说明: