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];
4

3 回答 3

14

只需将框架设置为等于一个新的矩形,例如

lblDate.frame = CGRectMake(x,y,width,height);
于 2011-07-08T18:19:55.990 回答
0

lblDate.frame = newRect

但是您可能应该为此使用自动调整大小标志。

于 2011-07-08T18:20:30.383 回答
0

UIView 类参考中找到。

框架

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

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

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

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

对此属性的更改可以设置动画。但是,如果 transform 属性包含非恒等变换,则 frame 属性的值是未定义的,不应修改。在这种情况下,您可以使用 center 属性重新定位视图并使用 bounds 属性调整大小。

于 2011-07-08T18:25:46.987 回答