使用Autolayout为动画准备视图

时间:2014-11-30 19:09:47

标签: ios animation autolayout constraints

我目前正在处理一个应用程序,我想在页面上添加一个动画:视图控制器1.在这个视图控制器1中,我添加了一个容器:容器1.当视图时,此容器应该是框架外的将出现,并在用户操作后变为可见。

这就是我在故事板中的视图控制器1的样子:

enter image description here

因为我正在使用自动布局,所以我想在View控制器1出现时使用约束来隐藏容器1。所以,我将容器1的约束Top连接到我的视图控制器1类。

我的第一个问题 - 内部问题

在这个类和方法viewWillLayoutSubviews中,我将此约束的常量更改为容器1的高度:

override func viewWillLayoutSubviews() {
        self.container1TopLayout.constant = -self.container1.frame.height
    }

我还添加了一个带有动作的按钮:showContainer

func showContainer(){
        self.container1TopLayout.constant = 0
        UIView.animateWithDuration(1.0, animations: { () -> Void in
            self.newCustomServiceContainer.layoutIfNeeded()
        })
    }

在这种方法中,我将常量更改为零。但观点并未显示。

第二个问题 - 正常工作

如果在我的故事板中,我在用户录制操作按钮之前将容器1位置更改为已经在框架外。当用户粘贴按钮时,容器1被正确显示;我使用了相同的方法showContainer

你能告诉我,我在第一期中做错了什么吗?也许我不应该在viewWillLayoutSubviews中设置常量?

提前谢谢

1 个答案:

答案 0 :(得分:0)

就我而言,我这样做:

override func viewDidLoad()
{
   prepareContainer()
}

override func viewDidAppear(animated: Bool)
{
   showContainer()
}