为视图控制器的视图的边界原点设置动画时会发生什么?

问题描述 投票:0回答:1

如果我为视图控制器的视图的边界原点设置动画:

UIView.animate(withDuration: 1) {
    self.view.bounds.origin.y = 20
}

其所有子视图均向上动画20点。但是我以为我只是将边界原点向下移动了20点,所以子视图为什么不向下移动20个点?执行此动画时实际上发生了什么?

或者仅仅是在边界坐标系中,正数是向上的?

ios swift uiview
1个回答
1
投票

我相信您可能将视图的bounds与视图的frame混淆。

但是我以为我只是将边界原点向下移动了20点,所以子视图为什么不向下移动20点?

[否,如果您将frame(此视图位于其父视图的坐标系中)下移了20,则它(及其子视图)将下降20。但是您调整了bounds,而不是frame ]。

执行此动画时实际上发生了什么?

为了使查看更容易一些,我将有问题的视图赋予其自己的背景色,以便您可以相对于其子视图查看该视图。在下面,我将界限移了50点。通过将originbounds从0,0更改为0,50,我们说的是“此视图自身坐标系的左上角不再是0,0,而是0,50”,从而将其所有子视图上移50:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.