【问题标题】:Prepare views for animations, using Autolayout使用自动布局为动画准备视图
【发布时间】:2014-11-30 19:09:47
【问题描述】:

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

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

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

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

在这个类和方法viewWillLayoutSubviews中,我把这个约束的常量改成了容器1的-height:

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 中设置常量?

提前谢谢你

【问题讨论】:

    标签: ios animation autolayout constraints


    【解决方案1】:

    就我而言,我这样做:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-21
      • 1970-01-01
      • 2013-12-04
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      相关资源
      最近更新 更多