思路:
写一个 UILbel的子类;在子类里面重新布置UILbel的字体间距;
如代码 .h
#import <UIKit/UIKit.h> @interface AdjustableUILable : UILabel { CGFloat characterSpacing; } @property CGFloat characterSpacing; @end
代码 .m
#import "AdjustableUILable.h" @implementation AdjustableUILable @synthesize characterSpacing; - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { } return self; } - (void)drawTextInRect:(CGRect)rect { if (characterSpacing) { // Drawing code CGContextRef context = UIGraphicsGetCurrentContext(); CGFloat size = self.font.pointSize; CGContextSelectFont (context, [self.font.fontName UTF8String], size, kCGEncodingMacRoman); CGContextSetCharacterSpacing (context, characterSpacing); CGContextSetTextDrawingMode (context, kCGTextFill); // Rotate text to not be upside down CGAffineTransform xform = CGAffineTransformMake(1.0, 0.0, 0.0, -1.0, 0.0, 0.0); CGContextSetTextMatrix(context, xform); const char *cStr = [self.text UTF8String]; CGContextShowTextAtPoint (context, rect.origin.x, rect.origin.y + size, cStr, strlen(cStr)); } else { // no character spacing provided so do normal drawing [super drawTextInRect:rect]; } } @end
如何使用:
HistoryToday *yearDates = [HistoryToday today];
AdjustableUILable *yearLabel = [[AdjustableUILable alloc]initWithFrame:CGRectMake(18, 6, 240, 30)];
yearLabel.text = yearDates.year;
yearLabel.characterSpacing = 14;
[self.view addSubview:yearLabel];