在 Objective-C 中标记文本



我对 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];

我正在尝试在屏幕上移动按钮,当我单击按钮时,会在标签中显示分数。目前,当我单击按钮时,分数会增加,但我的按钮会移回其原始位置。

我该如何解决这个问题?

您发布的代码应将按钮动画化到新位置。正如 holex 在他的评论中所说,您确实应该使用较新的方法,例如 animateWithDuration:animations: 及其变体。

如果您使用的是自动布局(Xcode 5 及更高版本中的默认或 XIB 文件和情节提要),则无法通过移动视图的帧来对视图(或视图的一种类型)进行动画处理。相反,您需要使用位置约束,将插座附加到约束,并更改约束的常量值。

如果要对帧进行动画处理,则需要关闭 XIB/情节提要上的自动布局,并使用较旧的支柱和弹簧样式调整大小。

由于您正在使用具有自动布局功能的故事板,因此它将始终返回到其位置。如果您打算对视图进行动画处理,我会以编程方式创建它。

    _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];

只需从情节提要中取出按钮,然后像这样创建按钮即可。您将能够将其移动到任何您想要的地方。然后以编程方式更改情节提要约束更容易。

最新更新