swift animateWithDuration动画不对

时间:2015-08-07 00:39:57

标签: ios swift uiviewanimation

当我滚动页面时,我隐藏了我的导航栏和其下的UIView作为扩展栏

我的应用程序构建如下:

包含带有嵌入式表视图的容器视图的VC。

从表格视图中,我有代表在用户向上或向下滚动时通知VC1。

我现在的问题是动画看起来不那么好。我要做的是为扩展栏设置动画,以使用淡入或淡出效果向上或向下设置动画。当发生这种情况时,我还会更新容器视图上的顶部约束,以便表视图将填满整个屏幕。 (我不确定我是否正确使用layoutneeded()或者在更新约束时应该使用其他东西)

我的代码:

func ContainerTableViewControllerScrolledUp(controller: ContainerTableViewController) {
        self.navigationController?.setNavigationBarHidden(false, animated: true)
        println("UP")
        UIView.animateWithDuration(
            1.5,
            delay: 0,
            usingSpringWithDamping: 0.7,
            initialSpringVelocity: 0.5,
            options: nil,
            animations: {
                self.extensionV.alpha = 1
                self.tableVConst.constant = 0
            },  completion: { finished in
                self.view.layoutIfNeeded()
            }
        )
    }

func ContainerTableViewControllerScrolledDown(controller:ContainerTableViewController) {
    self.navigationController?.setNavigationBarHidden(true, animated: true)
    println("DOWN")
    UIView.animateWithDuration(
        1.5,
        delay: 0,
        usingSpringWithDamping: 0.7,
        initialSpringVelocity: 0.5,
        options: nil,
        animations: {
            self.extensionV.frame.origin.y = CGFloat(-10)
            self.tableVConst.constant = -41
            self.extensionV.alpha = 0
        }, completion: { finished in
            self.view.layoutIfNeeded()
        }
    )
}

extensionV 是扩展程序视图 tableVConst 是包含我的表格视图的容器视图的顶部约束

那么我应该如何编辑我的代码以使扩展视图以淡入/淡出效果进行上/下动画制作?

1 个答案:

答案 0 :(得分:0)

不要在完成块中调用self.view.layoutIfNeeded(),而是在返回之前尝试在最后一行的动画块内调用它。