UIView不会以编程方式移动

时间:2014-04-08 22:38:44

标签: ios objective-c

所以我必须要有一些简单的东西,因为我无法弄清楚如何移动我的UIView

这是我到目前为止所拥有的

我的.m文件

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self buttonLayout];
}

-(void)buttonLayout
{
     UIView *theView = [self buttonGroup];
     theView.center=CGPointMake(50, 50);
}

我的.h文件

@property (nonatomic, retain) IBOutlet UIView *buttonGroup;

所以这就是我到目前为止所做的一切,我似乎无法让它完全移动 P.S我不想让它变得生气勃勃,因为我让我的布局移动以补偿不同的iPhone屏幕尺寸:)

3 个答案:

答案 0 :(得分:5)

正如另一张海报所说,当你自动布局生效时,你不能通过改变它们的中心或框架来移动视图。

相反,您必须添加一个垂直和水平约束,从顶部/左边定位视图,将出口连接到约束,然后从代码更改约束的常量值。

答案 1 :(得分:5)

我没有测试过这个,但似乎你需要:

A)从其父级中删除视图。

B)调整其框架的中心,而不是视图。

C)重新添加子视图。

像这样:

UIView *theView = [self buttonGroup];
CGRect theFrame = theView.frame;

[theView removeFromSuperview];

theFrame.origin.x = 50.0;
theFrame.origin.y = 50.0;

theView.frame = theFrame;

[self.view addSubview:theView];

这应该 autolayout。

答案 2 :(得分:-1)

我有类似的问题,但当我尝试按照第一个解决方案中的建议更改原点时,我得到“表达式不可分配”错误。

所以我用viewDidLoad()中的以下解决方案解决了它。

首先将其中心保存在某个临时变量中,然后更改中心并再次添加到其父视图中。

CGPoint buttonCenter = self.yourButton.center;
[self.yourButton removeFromSuperview];
buttonCenter.y = buttonCenter.y + 50.0;
self.yourButton.center = buttonCenter;
[self.view addSubview:self.yourButton];