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

时间:2011-07-08 18:17:33

标签: ios user-interface orientation rotation cgrect

我在视图中使用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 个答案:

答案 0 :(得分:14)

只需将框架设置为等于新的Rect,例如

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

答案 1 :(得分:0)

lblDate.frame = newRect

但你可能应该使用自动调整标志。

答案 2 :(得分:0)

UIView class reference中找到。

  

     

框架矩形,描述   视图的位置和大小   superview的坐标系。

     

@property(非原子)CGRect框架   讨论这个矩形定义了   视图的大小和位置   superview的坐标系。你用   布局时这个矩形   操作规模和位置   视图。设置此属性会更改   中心指定的点   属性和边界中的大小   相应的矩形。该坐标   帧矩形总是如此   以点数表示。

     

警告:如果是transform属性   不是身份变换,价值   这个属性是未定义的   因此应该被忽略。

     

更改框架矩形   自动重新显示接收器   不调用drawRect:方法。   如果你想要drawRect:方法   框架矩形时调用   更改,设置contentMode属性   到UIViewContentModeRedraw。

     

此属性的更改可以是   动画。但是,如果改造   属性包含非身份   变换,框架的价值   属性是未定义的,不应该   被修改。在那种情况下,你可以   使用中心重新定位视图   财产和调整大小使用   而不是边界属性。