gpt4 book ai didi

ios - 如何理解应用了旋转变换的 UIView 的框架?

转载 作者:可可西里 更新时间:2023-11-01 06:25:00 26 4
gpt4 key购买 nike

在为应用了旋转变换的 UIView 执行下面的代码时,我遇到了一个奇怪的问题。我想做的是从 super View 中删除 View ,然后将其插入特定 View 下并恢复其框架:

  UIView* movedView=  [self.views objectAtIndex:newIndex];
center = movedView.center;

CGRect oldFrame = movedView.frame;

//find the layer on top and insert the moved view under that
UIView* coveringView = [self.views objectAtIndex:newIndex-1];
[movedView removeFromSuperview];
[self.view insertSubview:movedView belowSubview:coveringView];
movedView.frame = oldFrame;

我希望 View 会在操作后出现在同一位置,但它会根据通过 CGAffineTransformMakeRotation() 应用的旋转量来回移动。

通过将分配框架的调用替换为分配 center 属性的调用,我获得了所需的行为。这让我开始思考——如何理解 UIView 的框架在旋转时发生了什么? 是否有好的教程或其他东西可以帮助我从概念上理解变换如何影响 UIView 的框架?

最佳答案

The -[UIView frame] documentation是这样说的:

Warning: If the transform property is not the identity transform, the value of this property is undefined and therefore should be ignored.

还有这个:

Changes to this property can be animated. However, if the transform property contains a non-identity transform, the value of the frame property is undefined and should not be modified. In that case, you can reposition the view using the center property and adjust the size using the bounds property instead.

所以你可能想完全避免考虑 frame 属性,因为你的 transform 不是身份。

关于ios - 如何理解应用了旋转变换的 UIView 的框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16110276/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com