将CGRectMake(x,x,x,x)更改为其他位置,例如(y,y,y,y)

5

我使用CGRectMake(x,x,x,x)在我的视图中放置了一个按钮,其中x是位置和大小。当我使用-(BOOL)shouldAutoRotate...旋转视图时,我想将按钮的位置从纵向模式下的中心更改为横向模式下的中心。按钮的标签中包含用户设置的信息,因此我不想为横向方向使用不同的视图。如果他们在纵向模式下设置了一些内容并旋转到横向模式下,他们将失去数据。所以我的问题是:如何移动先前设置的内容?请参见以下代码,我不想重新分配该按钮。谢谢!

// DATE

lblDate = [[UILabel  alloc] initWithFrame:CGRectMake(x, y, width, height)];

lblDate.text = @"Date:";
lblDate.backgroundColor = [UIColor clearColor];
[contentView addSubview:lblDate];
3个回答

14

只需将帧(frame)设置为一个新的矩形(Rect),例如:

lblDate.frame = CGRectMake(x,y,width,height);

0

lblDate.frame = newRect

但是你可能应该使用自动调整大小的标志。


0

如在UIView类参考资料中发现。

frame

框架矩形,描述视图在其父视图坐标系中的位置和大小。

@property(nonatomic) CGRect frame 讨论:此矩形定义了视图在其父视图坐标系中的大小和位置。您可以在布局操作期间使用此矩形来调整视图的大小和位置。设置此属性会相应地更改由中心属性指定的点和边界矩形中的大小。框架矩形的坐标始终以点为单位。

警告:如果变换属性不是恒等变换,则此属性的值未定义,因此应将其忽略。

更改框架矩形会自动重新显示接收器,而不调用drawRect:方法。如果希望在框架矩形更改时调用drawRect:方法,请将contentMode属性设置为UIViewContentModeRedraw。

对此属性的更改可以进行动画处理。但是,如果变换属性包含非恒等变换,则框架属性的值未定义,不应修改。在这种情况下,您可以使用中心属性重新定位视图,并使用边界属性调整大小。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接