使用自动布局动画包含子视图的视图

这是设置:

  • 在Interface Builder上创建的UIView,链接到IBOutlet变量( _vAbout
  • 这个视图的一个约束,我们想要动画,链接到一个IBOutlet变量( _ctrBottomAboutView
  • 我正在使用此代码来动画:

    _ctrBottomAboutView.constant = -100;
    [UIView animateWithDuration:0.5 animations:^{
        [_vAbout layoutIfNeeded];
    }
    

    我的问题是: 只要视图中有任何子视图,动画就不起作用 。 但是,如果视图没有孩子,则动画可以正常工作。

    你有任何解决方案的想法? 我已经尝试了一切:添加和删除约束而不是修改常量值,在Interface Builder的子视图中添加约束...


    经过一些实验,从一个空的项目开始实验,这是我发现的:

    鉴于A的观点,我们想要动画和B超视图

  • 请记住,接收layoutIfNeeded消息的视图是拥有该约束的视图,这一点非常重要。
  • 对于NSLayoutAttributeWidthNSLayoutAttributeHeight ,约束的所有者实际上是A,但在所有其他情况下,拥有约束的视图是B
  • 然而

  • 如果A没有任何子视图,我们可以随时在我们的代码上调用[A layoutIfNeeded] ,它将起作用
  • 如果A有一个或多个子视图,但我们在viewDidLoad上启动动画,我们可以调用[A layoutIfNeeded]并且它将起作用
  • 链接地址: http://www.djcxy.com/p/75029.html

    上一篇: Animate a view containing subviews with autolayout

    下一篇: What is the correct way to prepare dataset for machine learning?