Ios 雪碧套件:标签';跳跃';当文本更改时

Ios 雪碧套件:标签';跳跃';当文本更改时,ios,objective-c,sprite-kit,Ios,Objective C,Sprite Kit,我有一个标签,显示自从玩家第一次触摸屏幕以来在我的游戏中经过的时间。它显示秒和毫秒。我把它定位在框架的中间,使用 CGPointMake(CGRectGetMidX(self.frame) 问题是,并非所有数字的宽度都相同(例如,1小于3)。这会导致我的标签在毫秒更新时从左到右快速跳转一到两个像素。由于标签大小每次都明显增大或减小,因此标签的中点坐标会发生变化并导致标签移动。我希望它一直保持在同一个位置 有人知道阻止它移动的方法吗 编辑:标签代码 -(SKLabelNode *) timeL

我有一个标签,显示自从玩家第一次触摸屏幕以来在我的游戏中经过的时间。它显示秒和毫秒。我把它定位在框架的中间,使用

 CGPointMake(CGRectGetMidX(self.frame)
问题是,并非所有数字的宽度都相同(例如,1小于3)。这会导致我的标签在毫秒更新时从左到右快速跳转一到两个像素。由于标签大小每次都明显增大或减小,因此标签的中点坐标会发生变化并导致标签移动。我希望它一直保持在同一个位置

有人知道阻止它移动的方法吗

编辑:标签代码

-(SKLabelNode *) timeLabel
{
timeLabel = [[SKLabelNode alloc] initWithFontNamed:@"Arial"];
timeLabel.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMinY(self.frame);
timeLabel.fontColor = [SKColor blackColor];
timeLabel.fontSize = fontSize;

timeLabel.text = [NSString stringWithFormat:@"%02i:%02i,%02i", min, sec, mil];

return tijdLabel;
}

尝试将标签对齐设置为中心,如下所示:

timeLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentModeCenter;
timeLabel.verticalAlignmentMode = SKLabelVerticalAlignmentModeCenter;

必须将标签文本向左对齐。其他任何东西都会使它抖动。请看下面的测试代码

#import "MyScene.h"

@implementation MyScene
{
    SKLabelNode *timeLabel;
}

-(id)initWithSize:(CGSize)size
{
    if (self = [super initWithSize:size])
    {        
        timeLabel = [[SKLabelNode alloc] initWithFontNamed:@"Arial"];
        timeLabel.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMinY(self.frame));
        timeLabel.fontColor = [SKColor whiteColor];
        timeLabel.fontSize = 20;
        timeLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentModeLeft;
        timeLabel.verticalAlignmentMode = SKLabelVerticalAlignmentModeBottom;
        [self addChild:timeLabel];
    }
    return self;
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    //
}

-(void)update:(CFTimeInterval)currentTime
{
    timeLabel.text = [NSString stringWithFormat:@"%f",currentTime];
}

@end

谢谢你的意思是仅仅添加myLabel.text=@“长的东西”吗?因为这似乎没有任何作用,因为当场景开始时,标签文本会更改为计时器在“帧”属性(即myLabel.frame)上设置标签的大小。如果仍然不清楚,您可以在初始化标签的位置添加代码吗?谢谢。我试过你的建议,但还是没什么改变。。奇怪的是,当我在标签上放置一个点或0作为最后一个字符时,跳跃就结束了。但是将文本向左或居中对齐对我没有帮助在使用标签的aliignmentMode进行了更多的调整后,我得到了正确的结果!谢谢你的帮助,我不认为这实际上是“正确的”-它应该是,如果使用单间距字体和所有,但出于某种原因,我看到非常跳跃的标签,即使使用上述所有。在SpriteKit内部,它确实感觉像是某种不幸的问题