继承自UILabel
的YQLabel
的.m
文件
#import "QYLabel.h"
#import <CoreText/CoreText.h>
@implementation QYLabel
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetTextMatrix(context, CGAffineTransformIdentity);
CGContextTranslateCTM(context, 0, self.bounds.size.height);
CGContextScaleCTM(context, 1, -1);
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 0, 0);
CGPathAddLineToPoint(path, NULL, self.frame.size.width - 40, 0);
CGPathAddLineToPoint(path, NULL, self.frame.size.width - 40, 40);
CGPathAddLineToPoint(path, NULL, self.frame.size.width, 40);
CGPathAddLineToPoint(path, NULL, self.frame.size.width, self.frame.size.height);
CGPathAddLineToPoint(path, NULL, 40, self.frame.size.height);
CGPathAddLineToPoint(path, NULL, 40, self.frame.size.height - 40);
CGPathAddLineToPoint(path, NULL, 0, self.frame.size.height - 40);
CGPathCloseSubpath(path);
CGFloat lineSpacing = 5.0f;
CGFloat fontSize = 15.0f;
NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = lineSpacing;
NSDictionary * dict = @{NSFontAttributeName:[UIFont fontWithName:@"Helvetica" size:fontSize],
NSForegroundColorAttributeName:[UIColor redColor],
NSParagraphStyleAttributeName:paragraphStyle};
NSString * string = @"你爱我 我爱你 蜜雪冰城甜蜜蜜 你爱我 我爱你 蜜雪冰城甜蜜蜜 你爱我 我爱你 你爱我 我爱你 蜜雪冰城甜蜜蜜 你爱我 我爱你 蜜雪冰城甜蜜蜜 你爱我 我爱你 蜜雪冰城甜蜜蜜 你爱我 我爱你 你爱我 我爱你 蜜雪冰城甜蜜蜜 你爱我 我爱你 蜜雪冰城甜蜜蜜 你爱我 我爱你 蜜雪冰城甜蜜蜜 你爱我 我爱你 你爱我 我爱你 蜜雪冰城甜蜜蜜 你爱我 我爱你 蜜雪冰城甜蜜蜜 你爱我 我爱你 蜜雪冰城甜蜜蜜 你爱我 我爱你 你爱我 我爱你 蜜雪冰城甜蜜蜜 你爱我 我爱你 蜜雪冰城甜蜜蜜 你爱我 我爱你 蜜雪冰城甜蜜蜜 你爱我 我爱你 你爱我 我爱你 蜜雪冰城甜蜜蜜 你爱我 我爱你 蜜雪冰城甜蜜蜜 你爱我 我爱你 蜜雪冰城甜蜜蜜 你爱我 我爱你 你爱我 我爱你 蜜雪冰城甜蜜蜜";
NSMutableAttributedString * attStr = [[NSMutableAttributedString alloc] initWithString:string
attributes:dict];
CTFramesetterRef frameSetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)attStr);
CTFrameRef frame = CTFramesetterCreateFrame(frameSetter, CFRangeMake(0, attStr.length), path, NULL);
CTFrameDraw(frame, context);
CFRelease(frame);
CFRelease(path);
CFRelease(frameSetter);
}
@end
效果如下: