我必须在UILabel中显示货币和价格。在一个标签中,但使用不同的字体大小。现在看起来像这样:



...并且我做到了覆盖drawTextInRect:像这样:

- (void)drawTextInRect:(CGRect)rect{

    CGSize textSize = [self.text sizeWithFont:self.font];
    textSize.width -= textSize.width/12;
    CGRect analogRect = CGRectMake(0, 0, textSize.width, self.frame.size.height);
    CGPoint centrino = self.center;

    self.frame = analogRect;
    self.center = centrino;

    NSString *currency = [self.text substringWithRange:NSMakeRange(0, 3)];
    NSString *amount = [self.text substringWithRange:NSMakeRange(3, self.text.length - 3)];

    self.text = currency;
    self.textAlignment = UITextAlignmentLeft;
    self.font = [UIFont fontWithName:@"Helvetica-Bold" size:30.];
    self.baselineAdjustment = UIBaselineAdjustmentAlignBaselines;
    [super drawTextInRect:analogRect];

    self.text = amount;
    self.textAlignment = UITextAlignmentRight;
    self.font = [UIFont fontWithName:@"Helvetica-Bold" size:40.];
    [super drawTextInRect:analogRect];
}


很好,不是吗?

但是我需要使货币和底部的价格保持一致,如下所示:



如您所见,我需要强制降低“ EUR”,因为它的尺寸较小且居中,因此看起来较高。

请提出一种方法。

提前致谢!

注意:

使用2个不同的标签对我不利。我要在一个标签上做。

最佳答案

有两个想法:1)由于要对UILabel进行子类化,因此可以在子类的实现中放置货币类型的第二个标签,并且您的视图仍会认为只有一个标签。 2)由于NDA今天在iOS 6上取消,因此我建议您看一下属性字符串。哦,+ 1是写“ UILabel”而不是“ UILabel”。

10-08 05:42
查看更多