UILabel 划线
2016-06-17 13:51
309 查看
在很多APP售卖的界面中经常看到有打折之前的价钱被添加了一条线条,本人在很多平台中找了方法,自己亲自码了几次,研究总结,分享这篇包括了所有方法,浅显易懂,和大家一起进步。(觉得有用就点击“喜欢”啦。)
UILabel添加线条.png
方法一总结:方法一是最常用的,最方便的一种。
在UIView中,重写drawRect: (CGRect) aRect方法,可以自己定义想要画的图案.且此方法一般情况下只会画一次.也就是说这个drawRect方法一般情况下只会被调用一次.
开始讲解:首先我们要创建一个继承UIView的子类:
然后在这个子类里面重写drawRect:(CGRect)rect方法,上代码:
再者,在一个界面中添加UILabel,导入那个子类的头文件添加这个子类。
方法二的使用性很广泛,可不是单单的添加删除线和下划线,利用这种方法可以绘制出各种各样的图案。利用它添加删除线的时候,需要设置下划线添加在哪里,线条的长度也是随意的设置,并不一定需要和显示的字符串一样长。
UILabel添加线条.png
方法一:用RTLabel开源的富文本
//首先创建一个Label label = [[UILabel alloc]initWithFrame:CGRectMake(130, 300, 180, 80)]; label.font = [UIFont systemFontOfSize:35]; label.backgroundColor = [UIColor yellowColor]; [self.view addSubview:label]; //设置显示的价格 NSString *oldPrice = @"¥ 12345"; //获取字符串的长度 NSUInteger length = [oldPrice length]; //从这里开始就是设置富文本的属性 NSMutableAttributedString *attri = [[NSMutableAttributedString alloc] initWithString:oldPrice]; //下面开始是设置线条的风格: //第一个参数addAttribute:是设置要中线(删除线)还是下划线。 //NSStrikethroughStyleAttributeName:这种是从文本中间穿过,也就是删除线。 //NSUnderlineStyleAttributeName:这种是下划线。 //第二个参数value:是设置线条的风格:虚线,实现,点线...... //第二参数需要同时设置Pattern和style才能让线条显示。 //第三个参数range:是设置线条的长度,切记,不能超过字符串的长度,否则会报错。 [attri addAttribute:NSStrikethroughStyleAttributeName value:@(NSUnderlinePatternSolid | NSUnderlineStyleSingle) range:NSMakeRange(0, length)]; //下列是设置线条的颜色 //第一个参数就是选择设置中线的颜色还是下划线的颜色,如果上面选择的是中线,这里就要选择中线,否则颜色设置不上去。 //第二个参数很简单,就是颜色而已。 //第三个参数:同上。 [attri addAttribute:NSStrikethroughColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, length)]; [label setAttributedText:attri];
方法一总结:方法一是最常用的,最方便的一种。
方法二:重写drawRect:(CGRect)rect方法
说明:这种方法较复杂,逼格较高。再说明一下重绘,重绘操作是在在drawRect方法中完成,但是苹果不允许直接调用drawRect方法。苹果要求我们调用UIView类中的setNeedsDisplay方法,则程序会自动调用drawRect方法进行重绘。在UIView中,重写drawRect: (CGRect) aRect方法,可以自己定义想要画的图案.且此方法一般情况下只会画一次.也就是说这个drawRect方法一般情况下只会被调用一次.
开始讲解:首先我们要创建一个继承UIView的子类:
然后在这个子类里面重写drawRect:(CGRect)rect方法,上代码:
#import "ViewSon.h" @implementation ViewSon - (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [UIColor grayColor].CGColor); CGContextFillRect(context, CGRectMake(0, CGRectGetHeight(self.frame) - 0.5, CGRectGetWidth(self.frame), 0.5)); } @end
再者,在一个界面中添加UILabel,导入那个子类的头文件添加这个子类。
label = [[UILabel alloc]initWithFrame:CGRectMake(130, 300, 180, 80)]; label.text = @" ¥258"; label.font = [UIFont systemFontOfSize:35]; [self.view addSubview:label]; ViewSon * viewson = [[ViewSon alloc]initWithFrame:CGRectMake(35,100, 65, 4)]; viewson.backgroundColor = [UIColor redColor]; [viewson setNeedsDisplay];//这句就是调用方法,程序会自动调用重写了得那个方法。 [label addSubview:viewson];
方法二的使用性很广泛,可不是单单的添加删除线和下划线,利用这种方法可以绘制出各种各样的图案。利用它添加删除线的时候,需要设置下划线添加在哪里,线条的长度也是随意的设置,并不一定需要和显示的字符串一样长。
相关文章推荐
- iOS App中UILabel的自定义及在Auto Layout中的使用
- IOS 7.1 兼容性bug 问题,UIButton,UILabel ...
- UILabel的学习
- UILabel显示HTML
- UILabel
- iOS控件--UILabel
- ULabel显示1.n行文字特效,特效
- [Swift]UIKit学习之UILabel的用法
- label指定位置文字属性设置
- 倒计时
- 第一个IOS程序(代码版)
- 'UITextAlignmentCenter' is deprecated: first deprecated in iOS 6.0设置UILabel的居中对齐时出错
- iOS UI三大控件和应用程序启动流程
- 关于UIview UIlabel Unbutton 的一些常用的属性方法(用以优化界面)
- UILabel自动换行,自适应高度
- UILabel 的基本使用和扩展
- 关于UILable自适应数据内容问题
- iOS8.0以上Label的警告处理
- Lesson1 UIWidow,UIView,UILabel的使用
- iOS开发——UILabel自动换行及高度自适应UILabel自动换行及高度自适应