在UILabel上设置文本会重置其他UI元素的位置

时间:2013-02-09 01:01:01

标签: objective-c uilabel

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

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

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

不确定这是否有用,但我认为我设置的一切都是正确的:

h file:

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

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

m file:

@interface ViewController ()

@end

@synthesize scoreLabel;
@synthesize score;

1 个答案:

答案 0 :(得分:2)

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

Remove autolayout (constraints) in Interface Builder

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

scoreLabel.text = [NSString stringWithFormat:@"%i", score];