0

我正在使用以下函数将 self.view 移动到指定的 x 轴:

func shiftMainContainer(#targetPosition: CGFloat, completion: ((Bool) -> Void)! = nil) {
    UIView.animateWithDuration(0.5, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.5, options: UIViewAnimationOptions.CurveEaseInOut, animations: {
        self.view.frame.origin.x = 300
        println("View should shift")
        }, completion: completion)
}

当我从同一视图中的 @IBAction 按钮调用此函数时,它可以工作,但是当我使用子视图中的委托方法调用它时,什么也没有发生。我知道委托可以工作,因为 println 会按应有的方式打印文本,但视图并没有像第一种情况那样发生变化。

从子视图委托调用它会有所不同吗?

谁能指出我正确的方向?在今天的大部分时间里,我一直在为此苦苦挣扎。

更新:-

设法在一个新的空白项目中重现问题。在这里查看:

https://github.com/EugeneTeh/DelegateAnimateTest

4

1 回答 1

0

就我而言,当我添加时它对我来说很好self.view.layoutIfNeeded()

func shiftMainContainer(#targetPosition: CGFloat, completion: ((Bool) -> Void)! = nil) {
    UIView.animateWithDuration(0.5, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.5, options: UIViewAnimationOptions.CurveEaseInOut, animations: {
        self.view.frame.origin.x = 300
        println("View should shift")
        self.view.layoutIfNeeded()
    }, completion: completion)
}
于 2017-02-19T11:54:58.573 回答