首页 > 解决方案 > 为视图控制器视图的边界原点设置动画时实际会发生什么?

问题描述

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

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

它的所有子视图都向上动画 20 点。但我以为我只是将边界原点向下移动了 20 点,那么为什么子视图不向下移动 20 点呢?当我执行这个动画时实际发生了什么?

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

标签: iosswiftuiview

解决方案


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

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

不,如果您将frame(该视图在其父视图坐标系中的位置)向下移动 20,那么它(及其子视图)将向下移动 20。但是您调整的是bounds,而不是frame.

当我执行这个动画时实际发生了什么?

为了使它更容易看到,我将给有问题的视图赋予它自己的背景颜色,以便您可以看到与它的子视图相关的视图。下面,我将界限移动了 50 个点。通过将 的origin0 bounds, 0 更改为 0, 50,我们说“这个视图自身坐标系的左上角不再是 0, 0,而是 0, 50”,从而移动了它的所有子视图上升 50:

在此处输入图像描述


推荐阅读