Ios 转换与更改UIView的帧?

Ios 转换与更改UIView的帧?,ios,uiview,orientation,transform,frame,Ios,Uiview,Orientation,Transform,Frame,将平移和缩放变换应用于视图和简单地将其设置为新框架之间的区别是什么?只是变换可以被动画化,或者还有更多的事情需要考虑 我特别想到的是,当改变设备的方向时,应该改变位置和/或大小的视图 感谢一个关键点是,旋转后将重新计算帧,特别是在更改设备方向时。在旋转前设置帧不会影响旋转后的帧。在这种情况下,使用变换可能更有用,因为随后将根据变换属性重新计算帧。苹果的一个警告是: 警告 如果transform属性不是标识转换,则此属性的值未定义,因此应忽略 我发现设置缩放变换通常不会产生我想要的行为;它实际上拉

将平移和缩放变换应用于视图和简单地将其设置为新框架之间的区别是什么?只是变换可以被动画化,或者还有更多的事情需要考虑

我特别想到的是,当改变设备的方向时,应该改变位置和/或大小的视图


感谢

一个关键点是,旋转后将重新计算帧,特别是在更改设备方向时。在旋转前设置帧不会影响旋转后的帧。在这种情况下,使用变换可能更有用,因为随后将根据变换属性重新计算帧。苹果的一个警告是:

警告 如果transform属性不是标识转换,则此属性的值未定义,因此应忽略

我发现设置缩放变换通常不会产生我想要的行为;它实际上拉伸了视图,这(取决于视图的设置),可能会拉伸视图中的所有图像、按钮等,使其看起来很糟糕

通常,我真正想要的行为实际上是更改视图上的约束。由于帧是在基于约束旋转后重新计算的,因此与简单地更改帧相比,此方法在设备旋转时使用更加友好。还可以设置约束更改的动画


最后,我最近发现了一件非常有用的事情,那就是可以为您在interface builder中创建的约束创建一个出口,这样您仍然可以在interface builder中布局视图,但可以通过编程更改约束。

Frame描述了大小和相对位置(原点)在superview中的视图,而变换,而CGAffineTransform是一个3乘3矩阵,描述另一个坐标系中的坐标系。有关更多详细信息,请参阅CGAffineTransform的参考:

在iOS中转换视图对象最常用的方法:

另外,这里还有另一个可能有用的答案:


您也可以设置帧更改的动画。我想平移更容易,因为它们为你做所有的计算,比如旋转等等。。。某些动画在帧更改时更难执行,因为需要手动计算