0

我只是在学习objective-c,所以我的问题可能很简单。我正在创建一个简单的游戏,该游戏具有用于跟踪玩家得分的标签。游戏运行良好,计算分数没有问题。当我将标签的 text 属性设置为存储在我的 score 变量中的值时,就会出现问题。

score += (int)someFloatValue;
NSString *scoreText = [NSString stringWithFormat:@"%i", score];
scoreLabel.text = scoreText;

在我的游戏循环中,我总是设置这个文本。因此,即使在分数超过零之前,我也会不断地将文本设置为零值。到目前为止没有问题。一旦玩家得分,我的 score 变量中的值就会改变。仍然没有问题。但是,当我使用新分数更新标签的文本时,我所有 UI 元素的位置都会重置回最初在界面生成器中设置的位置。没有崩溃。并且分数会正确显示在标签中。只是每个 UI 元素都会被移动。

不确定这是否有帮助,但我认为我设置了一切正确:

h 文件:

@interface ViewController : UIViewController{
    UILabel *scoreLabel;
    NSInteger score;
}

@property (nonatomic, retain) IBOutlet UILabel *scoreLabel;
@property (nonatomic) NSInteger score;

.m 文件:

@interface ViewController ()

@end

@synthesize scoreLabel;
@synthesize score;
4

1 回答 1

2

如果您在代码中移动 UI 元素而不是在 IB 中设置约束,请务必关闭自动布局。

在 Interface Builder 中删除自动布局(约束)

此外,您可以像这样简化该代码(尽管它很好):

scoreLabel.text = [NSString stringWithFormat:@"%i", score];
于 2013-02-09T01:13:09.417 回答