我在视图中使用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];
答案 0 :(得分:14)
只需将框架设置为等于新的Rect,例如
lblDate.frame = CGRectMake(x,y,width,height);
答案 1 :(得分:0)
lblDate.frame = newRect
但你可能应该使用自动调整标志。
答案 2 :(得分:0)
的帧强> 的
框架矩形,描述 视图的位置和大小 superview的坐标系。
@property(非原子)CGRect框架 讨论这个矩形定义了 视图的大小和位置 superview的坐标系。你用 布局时这个矩形 操作规模和位置 视图。设置此属性会更改 中心指定的点 属性和边界中的大小 相应的矩形。该坐标 帧矩形总是如此 以点数表示。
警告:如果是transform属性 不是身份变换,价值 这个属性是未定义的 因此应该被忽略。
更改框架矩形 自动重新显示接收器 不调用drawRect:方法。 如果你想要drawRect:方法 框架矩形时调用 更改,设置contentMode属性 到UIViewContentModeRedraw。
此属性的更改可以是 动画。但是,如果改造 属性包含非身份 变换,框架的价值 属性是未定义的,不应该 被修改。在那种情况下,你可以 使用中心重新定位视图 财产和调整大小使用 而不是边界属性。