在UIViewController视图上设置动画子视图

时间:2015-06-28 16:00:58

标签: ios objective-c swift ios8

我将UITableView作为UIViewController的UIView(父视图)的子视图。当我为我的父视图设置动画如下:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h3>Assignments</h3>
<div>
  Assignment Count
  <input type="number" name="assignment_count">
</div>

<h3>Foo</h3>
<div>
  Foo Count
  <input type="number" name="foo_count">
</div>

<h3>Bar</h3>
<div id="section">
  Bar Count
  <input type="number" name="bar_count">
</div>

我观察到我的子视图(表视图)不是动画。我尝试将子视图的Autoresizing Mask设置为flexibleWidth和flexibleHeight,但是没有取得任何成功。任何人都知道为什么会这样。

1 个答案:

答案 0 :(得分:1)

如果您使用自动布局(这是Xcode 6/7上iOS 8/9中的默认设置),您需要在UIView动画关闭内更改视图的约束,而不是更改框架。

如果你没有使用自动布局,那么你可以像上面那样更新框架,但是,我想你是。因此,您需要调用layoutSubviews,然后以编程方式设置表示所需更改布局的新约束,最后再在动画闭包内调用layoutSubviews

示例:

func AnimateBackgroundHeight() {
    self.view.layoutSubviews()
    UIView.animateWithDuration(0.5, animations: {
         self.heightCon.constant = 600 // heightCon is the IBOutlet to the constraint
         self.view.layoutSubviews()    
    })
}