UILabel导致其他对象在iOS上重置位置

我正在学习为iPhone编程,并且正在制作一个简单的弹跳游戏,一个球在平台上向上弹跳。 当游戏到达屏幕的前四分之一时,游戏就会运行并且球向上移动(屏幕上的平台向下移动,类似于Doodle Jump),但是我在尝试实现一个分数计数器时遇到了问题。 当球到达屏幕的前四分之一时,我添加到得分并运行以下两行代码:

NSString *nssScore = [NSString stringWithFormat:@"%i", score]; lblScore.text = nssScore; 

lblScore是一个UILabel,并链接到视图中的文本标签。 每当文本在屏幕上更新时,球和所有平台都会返回到起始位置,但球保持其速度。 当一行一行地运行debugging器时,我可以无误地运行这两行代码,问题在于下一次刷新时屏幕上的文本被更改。 主要的游戏循环和帧速率是用以下代码行来运行的:

 [NSTimer scheduledTimerWithTimeInterval:1.0/60 target:self selector:@selector(gameLoop) userInfo:nil repeats:YES]; 

这是布局约束的问题。 这个问题实际上与标签没有任何关系,只是设置标签的值会触发重绘(或布局,我不确定究竟是哪个方法被调用)。 最简单的解决scheme是closuresIB中的自动布局(从屏幕右侧的最左边的选项卡)。 或者,您可以通过制作animation约束来移动球,而不是设置框架。