什么用于移动UIView self.frame或self.transform属性?
我有点困惑这个问题。
我知道我可以移动视图来改变他们的self.frame.origin
,但是我发现有一个属性叫做transform,我认为这是为了在屏幕上移动我的视图等。
也许我不明白这一点。
所以我想知道:我必须使用哪个属性来移动UIView
(或它的子类),以及另一个属性是什么? 或者如果我完全错了,请给我正确的方式。
UIView
的frame
属性定义了它相对于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];