我有一个标签,显示自玩家第一次触摸屏幕以来我游戏中已经过的时间。它显示秒和毫秒。我使用
将它放在框架的中间 CGPointMake(CGRectGetMidX(self.frame)
问题是,并非所有数字看起来都具有相同的宽度(例如,1小于3)。这会导致我的标签在毫秒更新时从左向右快速跳过一到两个像素。由于标签大小每次都会显着增加和减少,因此我的标签的MidX坐标会发生变化并导致我的标签移动。我希望它一直保持在同一个位置。
有没有人知道阻止它移动的解决方案?
编辑:标签代码
-(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;
}
答案 0 :(得分:1)
尝试将标签的对齐方式设置为中心,如下所示:
timeLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentModeCenter;
timeLabel.verticalAlignmentMode = SKLabelVerticalAlignmentModeCenter;
答案 1 :(得分:0)
您必须将标签文字对齐到左侧。任何其他东西都会让它抖动。请查看下面的测试代码。
#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