UILabel字体间距调整

思路:

  写一个 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];

  

原文地址:https://www.cnblogs.com/cocoajin/p/3142078.html