富文本简单实现

2018-03-27  本文已影响6人  阶梯

为实现途中的文字样式,采用富文本的方式,如果大家有好的想法,欢迎补充。


效果图.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就是倾斜
上一篇下一篇

猜你喜欢

热点阅读