代码之家  ›  专栏  ›  技术社区  ›  user2578850

设置约束动画时,子视图无法正确调整大小

  •  0
  • user2578850  · 技术社区  · 7 年前

    我需要更改视图控制器视图的子视图(称为playerView)的大小和位置。我已经为需要更改的约束创建了属性。但是当我设置更改的动画时,只有playerView是动画的,但它的所有子视图都不是:它们的大小会立即更改。

    以下是文本:

    self.playerViewTop.constant = screenHeight - MinizedPlayerTopOffset;
    self.playerViewLeading.constant = MinimizedPlayerOffset;
    self.playerViewWidth.constant = MinimizedPlayerWidth;
    self.playerViewHeight.constant = MinimizedPlayerHeight;
    
    [UIView animateWithDuration: 2.0 animations: ^
    {
        [self.view layoutSubviews];
    }];
    

    我不明白为什么会这样,因为我使用自动布局。请帮忙。

    2 回复  |  直到 7 年前
        1
  •  0
  •   Mischa    7 年前

    layoutIfNeeded() 在动画块中, layoutSubviews()

    (实际上,你不应该打电话

        2
  •  -1
  •   Rajeev Singh    7 年前
    [self.view layoutIfNeeded];
    [self.subView setNeedsUpdateConstraints];
    [self.subView updateConstraintsIfNeeded];
    [UIView animateWithDuration:1.0f delay:0.0f 
    options:UIViewAnimationOptionLayoutSubviews animations:^{
    [self.view layoutIfNeeded];
    } completion:nil];