什么用于移动UIView self.frame或self.transform属性?

我有点困惑这个问题。

我知道我可以移动视图来改变他们的self.frame.origin ,但是我发现有一个属性叫做transform,我认为这是为了在屏幕上移动我的视图等。
也许我不明白这一点。

所以我想知道:我必须使用哪个属性来移动UIView (或它的子类),以及另一个属性是什么? 或者如果我完全错了,请给我正确的方式。

UIViewframe属性定义了它相对于superview的位置。 如果你想移动视图,那就是要走的路。

transform属性基本上将CGAffineTransform应用于视图的背景层。 在大多数情况下,如果您只想移动视图,则不想使用此属性。

当涉及到旋转或缩放图层(即视图)时, transform属性很有用。 有时候,当你应用一个旋转的时候,你也需要移动它来“保持”它的位置,在这种情况下,你将使用transform属性来移动它。

添加更多信息

为什么使用框架。 从查看编程指南引用

当您要实现animation时,通常会修改视图的transform属性。 例如,您可以使用此属性来创build围绕其中心点旋转的视图的animation。 您不会使用此属性对您的视图进行永久更改 ,例如在其超级视图的坐标空间内修改其视图的位置或大小。 对于这种types的更改,您应该修改视图的框架矩形

为什么使用变换。 引用揭秘CGAffineTransform

翻译只是“移动”的一种奇特的方式。 当然,您可以通过更改视图框架属性的原始值(将视图相对于其超级视图移动)来实现移动,但由于我们无法将框架属性与其他转换一起使用 ,因此转换转换是一个重要的。

您可以通过更新其框架来移动UIView。 变换用于旋转和缩放视图。 如果要以animation方式移动视图,请尝试使用下面的animation块:

  [UIView animateWithDuration:0.3 //Time for the animation animations:^{ myView.frame = CGRectMake (0,0,10,20) //Move your frame } completion:^(BOOL finished){ //Do stuff when the animation completes }]; 
 CGrect = rect1 = [view1 frame]; rect1.origin.x = newX; rect1.origin.y = newY; 

您必须在animation中使用setFrame: ^{ <here> }

 [view1 set enter code here Frame:rect1];