我有关于Label.Test的问题
CGRect frame = _gobutton.frame;
frame.origin.x=rand()%330+1;
frame.origin.y=rand()%550+1;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];
_gobutton.frame = frame;
[UIView commitAnimations];
i=i+1;
self.score.Text = [NSString stringWithFormat:@"%i",i];
我试图在屏幕上移动按钮,当我点击按钮时会在标签中显示分数。目前,当我点击按钮时,分数会增加,但我的按钮会移回原来的位置。
我该如何解决这个问题?
答案 0 :(得分:0)
您发布的代码应将按钮设置为新位置的动画。正如holex在评论中所说,你应该真正使用像animateWithDuration:animations:
这样的新方法及其变体。
如果您使用自动布局(Xcode 5及更高版本中的默认或XIB文件和故事板),则无法通过移动框架为视图(或者是一种视图)设置动画。相反,您需要使用位置约束,将出口附加到约束,并更改约束的常量值。
如果要为框架设置动画,则需要关闭XIB / Storyboard上的自动布局,并使用较旧的struts和spring样式调整大小。
答案 1 :(得分:0)
由于您使用自动布局的故事板,它将始终返回其位置。 如果您计划为视图设置动画,我会以编程方式创建它。
_gobutton = [[UIButton alloc] initWithFrame:CGRectMake(buttonX, buttonY, buttonWidth, buttonHeight)];
[_gobutton addTarget:self action:@selector(yourButtonSelector:) forControlEvents:UIControlEventTouchUpInside];
[_gobutton setBackgroundImage:[UIImage imageNamed:@"aphoto"] forState:UIControlStateNormal];
[self.view addSubview:_gobutton];
只需从故事板上取下按钮,然后像这样创建按钮。您可以将它移动到任何您想要的位置。然后以编程方式更改故事板约束更容易。