当前位置: 首页 > 知识库问答 >
问题:

如何使用NSLayoutConstrains(自动布局)解决方案为我的视图设置动画?

西门庆
2023-03-14

我正在努力为新的iPhone5配置我的应用程序。所以我开始研究Cocao touch的自动布局指南([链接][1])和WDC大师班。

但有一件事我还不清楚。如何设置视图的动画。

在我以前的应用程序中,我使用了常规的UIView动画,如:

            [UIView  beginAnimations:nil context:NULL];
            [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
            [UIView setAnimationDuration:0.75];
            MyView.frame = CGRectMake(0,100, 100, 100);
            [UIView commitAnimations];

或CGAffineTransform方法。

有人能告诉我在使用自动布局时最好的解决方法是什么吗,因为我无法引用框架并且不再进行框架声明?设置计时器以及删除和添加约束?

共有3个答案

杭泉
2023-03-14

是的,当您使用自动布局时,所有setFrame方法都会被删除。在您的情况下,如果您希望视图移动一定数量的像素,您可以尝试移动视图的中心,而不是设置视图的框架并将视图周围约束的优先级设置为低。

谭兴学
2023-03-14

你应该用

[MyView layoutIfNeeded];

在动画块中。

何和惬
2023-03-14

这些约束实际上与动画没有任何关系。

但是,您应该使用最新的基于块的动画方法,例如动画宽度:动画:。

 类似资料:
  • 我有一个自定义视图CustomLayout(蓝色,自定义UIView),该视图包含3个子视图,通过使用约束(布局锚定)垂直对齐,每个视图按照以下顺序对齐: 1视图:幻灯片(红色,自定义UIView) 我想,当我单击按钮(黄色)时,如果使用动画打开,SlideLayout(红色)的高度大小会增加,如果关闭,则会减少。和其他视图必须在动画期间更改位置,如果SlideLayout增加/减少,则父视图(C

  • 许多有关自动布局约束动画的教程建议更新约束的常量属性,然后在动画块中调用。 我的处境有点棘手。我有一个包含3个子视图的视图。此超级视图的高度不是固定的-它是按其子视图的高度之和计算的。在某些情况下,我要求这3个子视图中的一个子视图切换其高度(它在0和30之间变化,即我希望平滑地隐藏和显示它)。代码类似于此: 不幸的是,这并不像我预期的那样有效。我可以看到子视图高度的平滑变化,但在为子视图高度约束设

  • 关于UITableViewCell高度动画,在堆栈溢出方面有很多类似的问题,但对于新的iOS8自动布局驱动的表视图,这些问题都不起作用。我的问题: 自定义单元格: 注意旋转木马高度限制。这是内容视图的子视图(唯一的子视图)的高度约束。 然后,在“查看我要展开的所有操作”单元上,我的代码: 如您所见,我尝试使用这个很好的旧解决方案: 您可以在选中UITableViewCell时设置高度更改的动画吗?

  • 我已经在IB中设计了我的自定义单元,将其子类化,并将我的插座连接到我的自定义类。我在单元格内容中有三个子视图,它们是:UIView(cdView)和两个标签(titleLabel和emailLabel)。根据每行可用的数据,有时我希望在单元格中显示UIView和两个标签,有时只显示两个标签。我想做的是这样设置约束,如果我将UIView属性设置为hidden,或者将其从superview中删除,则两

  • 了解 CSS 中属性的值及其特性, 透彻分析问题和需求才可以选择和设计最适合的布局解决方案。 居中布局 水平居中 子元素于父元素水平居中且其(子元素与父元素)宽度均可变。 inline-block + text-align <div class="parent"> <div class="child">Demo</div> </div> <style> .child { disp

  • 我遇到了自动布局的问题,似乎无法找到应该很容易实现的答案。 我有以下视图层次结构: 标签上的前导/尾随限制使它们在更薄的设备上更高(iPhone 4s vs iPhone 6)。 为了让UIScrollview正常工作,我需要在UIScrollView内部设置UIView的高度约束,以避免出现“不明确的高度”警告。 但在iPhone 4s上运行时,UIView不够高,无法容纳它的子视图。 到目前为