首页 文章

将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

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

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

    lblDate.frame = newRect

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

  • 0

    UIView class reference中所见 .

    frame框架矩形,用于描述超视图坐标系中视图的位置和大小 . @property(非原子)CGRect框架讨论此矩形在其superview的坐标系中定义视图的大小和位置 . 在布局操作期间使用此矩形来调整视图的大小和位置 . 设置此属性会相应地更改center属性指定的点和bounds矩形中的大小 . 框架矩形的坐标始终以磅为单位指定 . 警告:如果transform属性不是identity变换,则此属性的值未定义,因此应忽略 . 更改框架矩形会自动重新显示接收器而不调用drawRect:方法 . 如果希望在框架矩形更改时调用drawRect:方法,请将contentMode属性设置为UIViewContentModeRedraw . 可以对此属性的更改进行动画处理 . 但是,如果transform属性包含非标识变换,则frame属性的值是未定义的,不应修改 . 在这种情况下,您可以使用center属性重新定位视图,并使用bounds属性调整大小 .

相关问题