为实现途中的文字样式,采用富文本的方式,如果大家有好的想法,欢迎补充。
效果图.jpg
创建 UIKitDrawLabel 类,继承自 UILabel, 在此类中,利用富文本实现对文字的重绘。
VC中:
self.drawLabel = [[UIKitDrawLabel alloc] initWithFrame:CGRectMake(100, 150, 200, 200)];
self.drawLabel.backgroundColor = [UIColor grayColor];
self.drawLabel.str = @"北京";
[self.view addSubview:self.drawLabel];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
self.drawLabel.str = @"中国";
NSLog(@"------%s",__func__);
[self.drawLabel setNeedsDisplay];
});
UIKitDrawLabel :
- (void)drawRect:(CGRect)rect {
[self drawText];
}
- (void)drawText{
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
dic[NSFontAttributeName] = [UIFont systemFontOfSize:30];
//设置前景色
dic[NSFontAttributeName] = [UIFont fontWithName:@"Helvetica-Bold" size:20];
//设置笔画宽度
dic[NSStrokeColorAttributeName] = [UIColor greenColor];
//当为正数的时候,文字为空心的,前景色的设置失效
dic[NSStrokeWidthAttributeName] = @(-1.5);
// //设置阴影部分
// NSShadow *shadow = [[NSShadow alloc] init];
// shadow.shadowOffset = CGSizeMake(10, 10);
// shadow.shadowColor = [UIColor yellowColor];
// shadow.shadowBlurRadius = 10;
// dic[NSShadowAttributeName] = shadow;
[self.str drawAtPoint:CGPointZero withAttributes:dic];
NSLog(@"------%s",__func__);
}
demo效果.png
拓展:字体加黑
方法一:
labelname.font = [UIFont boldSystemFontOfSize:15.0];
这种方法可能导致个别字体加粗不成功,用过这个之后就不要再用
方法二:
labelname.font = [UIFont fontWithName:@"Helvetica-Bold" size:15];
Helvetica-Bold还可以换成
"Arial-BoldMT",
ArialMT,
"Arial-ItalicMT",
"Arial-BoldItalicMT等等
字体族科后面加-Bold就是加粗 加-Oblique就是倾斜
网友评论