UILabel中的单个字符偏移1个像素

时间:2014-08-07 17:40:13

标签: ios uilabel

我正在设置以下UILabel:

    UIImageView *textImageBackground = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"top100bar"]];
    textImageBackground.frame = CGRectMake( 104.0f, 6.0f, 215.0f, 104.0f);

    [self.contentView addSubview:textImageBackground];

    _lblRank = [[UILabel alloc] init];

    self.lblRank.textColor = [UIColor whiteColor];
    self.lblRank.textAlignment = NSTextAlignmentCenter;
    self.lblRank.font = [UIFont fontWithName:@"HelveticaNeue-Medium" size:10];
    self.lblRank.frame = CGRectMake(153.0f, 45.0f, 41.0f, 41.0f);
    self.lblRank.backgroundColor = [UIColor colorWithRed:.09 green:.62 blue:.11 alpha:1.0];
    [textImageBackground addSubview:_lblRank];

如果_lblRank的文本设置为长度为2个或更多字符的字符串,则它将文本完美居中,文本的左侧和右侧具有相同数量的像素。但是,如果字符串只有一个字符,则文本偏向左边1或2个像素。我通过抓取模拟器的屏幕截图并在预览中进行缩放和测量来测量这一点。

我附上了单字符和多字符版本的屏幕截图。

非常感谢! 斯蒂芬

1 个答案:

答案 0 :(得分:0)

符合标签的第一个尺寸:

[self.lblRank sizeToFit]

然后水平居中:

CGRect frame = self.lblRank.frame
frame.origin.x = self.lblRank.superview.frame.size.width/2.0 - frame.size.width/2.0;
self.lblRank.frame = frame

在使用上述代码之前,请确保标签具有超级视图。