iOS UI基础-17.0 UILable之NSMutableAttributedString
2015-12-03 23:21
573 查看
在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求。之前在网上找了一些资料,有的是重绘UILabel的textLayer,有的是用html5实现的,都比较麻烦,而且很多UILabel的属性也不起作用了,效果都不理想。后来了解到NSMuttableAttstring(带属性的字符串),上面的一些需求都可以很简便的实现。
NSMuttableAttstring 方法
为某一范围内文字设置多个属性
- (void)setAttributes:(NSDictionary *)attrs range:(NSRange)range;
为某一范围内文字添加某个属性
- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range;
为某一范围内文字添加多个属性
- (void)addAttributes:(NSDictionary *)attrs range:(NSRange)range;
移除某范围内的某个属性
- (void)removeAttribute:(NSString *)name range:(NSRange)range;
常见的属性及说明
NSFontAttributeName 字体
NSParagraphStyleAttributeName 段落格式
NSForegroundColorAttributeName 字体颜色
NSBackgroundColorAttributeName 背景颜色
NSStrikethroughStyleAttributeName 删除线格式
NSUnderlineStyleAttributeName 下划线格式
NSStrokeColorAttributeName 删除线颜色
NSStrokeWidthAttributeName 删除线宽度
NSShadowAttributeName 阴影
例子一:
效果:
例子二:
例子二中,range:[str rangeOfString:name] 找到name 有str 所在的范围。
删除:
参考博客:http://snowyshell.blog.163.com/blog/static/2209140342014475383375/
NSMuttableAttstring 方法
为某一范围内文字设置多个属性
- (void)setAttributes:(NSDictionary *)attrs range:(NSRange)range;
为某一范围内文字添加某个属性
- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range;
为某一范围内文字添加多个属性
- (void)addAttributes:(NSDictionary *)attrs range:(NSRange)range;
移除某范围内的某个属性
- (void)removeAttribute:(NSString *)name range:(NSRange)range;
常见的属性及说明
NSFontAttributeName 字体
NSParagraphStyleAttributeName 段落格式
NSForegroundColorAttributeName 字体颜色
NSBackgroundColorAttributeName 背景颜色
NSStrikethroughStyleAttributeName 删除线格式
NSUnderlineStyleAttributeName 下划线格式
NSStrokeColorAttributeName 删除线颜色
NSStrokeWidthAttributeName 删除线宽度
NSShadowAttributeName 阴影
例子一:
UILabel *testLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, 320, 30)]; testLabel.backgroundColor = [UIColor lightGrayColor]; testLabel.textAlignment = NSTextAlignmentCenter; NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:@"今天天气不错呀"]; [AttributedStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16.0] range:NSMakeRange(2, 2)]; [AttributedStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(2, 2)]; testLabel.attributedText = AttributedStr; [self.view addSubview:testLabel];
效果:
例子二:
UILabel *titleView = [[UILabel alloc] init]; titleView.width = 200; titleView.height = 100; titleView.textAlignment = NSTextAlignmentCenter; // 自动换行 titleView.numberOfLines = 0; titleView.y = 50; NSString *str = [NSString stringWithFormat:@"%@\n%@", prefix, name]; // 创建一个带有属性的字符串(比如颜色属性、字体属性等文字属性) NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:str]; // 添加属性 [attrStr addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:16] range:[str rangeOfString:prefix]]; [attrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12] range:[str rangeOfString:name]]; titleView.attributedText = attrStr;
例子二中,range:[str rangeOfString:name] 找到name 有str 所在的范围。
删除:
NSString *marketPrice = [NSString stringWithFormat:@"¥%d",4302]; NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:marketPrice]; [attrStr addAttribute:NSStrikethroughStyleAttributeName value:@(NSUnderlinePatternSolid | NSUnderlineStyleSingle) range:NSMakeRange(0, marketPrice.length)];
参考博客:http://snowyshell.blog.163.com/blog/static/2209140342014475383375/
相关文章推荐
- 响应式布局(Responsive Layout)/流式布局(Fluid Layout)/自适应布局(Adaptive)
- Media Queries媒体查询相关样式
- UIView
- 【Android】UnitTest、Android Studio build加速(小结:2015-12-3 22:40:19 )
- uImage、zImage、bzImage、vlinzx区别
- duilib如何设置字体大小
- iOS学习之UINavigationController详解与使用(三)ToolBar
- LeetCode 303 : Range Sum Query - Immutable (Java)
- iOS学习之UINavigationController详解与使用(二)页面切换和segmentedController
- iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem
- Market Guide for Cloud Access Security Brokers
- 黑马程序员—javaSE—St 4000 ring&StringBuffer&StringBuilder
- 【学习ios之路:UI系列】ios中常见的几种控件.(UISlider,UISwitch,UIStepper,UISegmentedControl)
- iOS UITextField实用实现手机账号344格式 —— HERO博客
- UISwitch 及其自定义方法
- hdu 4198:Quick out of the Harbour解题报告
- Github fork和pull request概念
- 关于UIView的center属性的理解
- UISegmentedControl
- UIALertView的基本用法与UIAlertViewDelegate对对话框的事件处理方法