NSString -- UILabel中字体有多种颜色,字符串自动计算高度/换行
一:UILabel中字体有多种颜色
UILabel *label = [[UILabel alloc] init];
label.frame = CGRectMake(, , , );
label.backgroundColor = [UIColor yellowColor]; NSString *name = @"David贾永强";
float money = 2.0;
NSString *contentStr = [NSString stringWithFormat:@"%@ 五分钟前薅取 %.2f元 羊毛",name,money];
NSMutableAttributedString *str = [[NSMutableAttributedString alloc]initWithString:contentStr]; [str addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:] range:NSMakeRange(, contentStr.length)];
//名字
NSRange nameRang = NSMakeRange(, name.length);
[str addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:nameRang];
[str addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:] range:nameRang]; //钱数
NSRange moneyRang = NSMakeRange(name.length + , );
[str addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:moneyRang];
[str addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:] range:moneyRang]; label.attributedText = str; [label sizeToFit];
[self.view addSubview:label];
效果图:

二:字符串自动计算高度/换行 方法一:
//进行动态获取高度和宽度。必须用这个NSDictionary,不能用NSMutableDictionary这个。
NSString *str = @"自动计算高度,然后换行,自动计算高度,然后换行,自动计算高度,然后换行,自动计算高度,然后换行,自动计算高度,然后换行,自动计算高度,然后换行,自动计算高度,然后换行,自动计算高度,然后换行,自动计算高度,然后换行,结束";
UIFont *font = [UIFont systemFontOfSize:15.0f];
NSDictionary *attributes = @{ NSFontAttributeName: font };
CGSize size = [str sizeWithAttributes:attributes]; UILabel *label = [[UILabel alloc] init];
label.frame = CGRectMake(, , size.width, size.height);
label.text = str;
label.font = font;
label.backgroundColor = [UIColor orangeColor];
[self.view addSubview:label]; // 自动计算高度,然后换行
label.lineBreakMode = NSLineBreakByWordWrapping;
label.numberOfLines = ; //boundSize,决定label的宽度. 设为屏幕宽度-100. 也可以设置固定的宽度
CGSize boundSize = CGSizeMake([UIScreen mainScreen].bounds.size.width-, MAXFLOAT);
CGSize brSize = [str boundingRectWithSize:boundSize options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attributes context:nil].size; label.frame = CGRectMake(, , brSize.width, brSize.height);
效果图:

字符串自动计算高度/换行 方法二:
//UILabel 的高度会根据字体自身,大小,label的宽度 自动计算.
UILabel *_label = [[UILabel alloc] initWithFrame:CGRectMake(, , , )];
_label.backgroundColor = [UIColor greenColor];
_label.font = [UIFont systemFontOfSize:];
_label.text = @"自动计算高度,然后换行自动计算高度,然后换行,自动计算高度,然后换行自动计算高度,然后换行,结束";
_label.numberOfLines = ;
[_label sizeToFit];
[self.view addSubview:_label];
NSString -- UILabel中字体有多种颜色,字符串自动计算高度/换行的更多相关文章
- TextView的一些高级应用(自定义字体、显示多种颜色、添加阴影)
1. 自定义字体可以使用setTypeface(Typeface)方法来设置文本框内文本的字体,而android的Typeface又使用TTF字体文件来设置字体所以,我们可以在程序中放入TTF字 ...
- iOS7中计算UILabel中字符串的高度
iOS7中计算UILabel中字符串的高度 iOS7中出现了新的方法计算UILabel中根据给定的Font以及str计算UILabel的frameSize的方法.本人提供category如下: UIL ...
- iOS NSString类中获取子字符串
NSString类中提供了这样三个方法用于获取子字符串: – substringFromIndex://取字符串长度从0开始,当index=str.length时字符串为空"" – ...
- 四、Input框改placeholder中字体的颜色
Input框改placeholder中字体的颜色 input::-webkit-input-placeholder { color: #ccc; font-size: 12px; }
- UE4中多种颜色轮廓线的后期处理
转自:http://blog.csdn.net/pizi0475/article/details/50396277 随着近来虚幻引擎4的一些变化,渲染多种颜色的轮廓线已经可以实现了!通过自定义模板,类 ...
- Eclipse中设置背景颜色与字体大小和xml文件中字体大小调整
Eclipse中代码编辑背景颜色修改: 代码编辑界面默认颜色为白色.对于长期使用电脑编程的人来说,白色很刺激我们的眼睛,所以改变workspace的背景色,可以使眼睛舒服一些.设置方法如下: 1.打开 ...
- QT5如何设置QLabel中字体的颜色
修改了wd的文章: 如何使用Qt5,设置QLabel中字体的颜色. 大致有几种做法: 一是使用setPalette()方法: 二是使用样式表: 三是可以使用QStyle: 四是可以在其中使用一些简单的 ...
- 【转】Android中设置TextView的颜色setTextColor--代码中设置字体颜色
原文网址:http://www.cnblogs.com/myphoebe/archive/2012/01/06/2314728.html android中设置TextView的颜色有方法setText ...
- UILable:显示多种颜色的方法
借用别人封装好的类库,用来显示同一个UILable上的多种颜色的字. 类库可以直接在次博客中下载,下载后别忘留言哦. 类库使用:主要用了CoreText里面的东西,所以在使用类库之前需要引用CoreT ...
随机推荐
- 【转】UITableViewCell自适应高度 UILabel自适应高度和自动换行
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { ...
- android之总结(一)——原
1,TextView 中实现跑马灯,需求:文字左边留置一段空白,不需要紧靠在左边:设置android:padding android:padding和android:layout_margin这个地方 ...
- 【WEB基础】HTML & CSS 基础入门(6)超链接
超链接--文字链接 超链接[hyperlink]是网页中最为常见的元素之一,我们几乎可以在所有的网站页面中找到超链接.每个网站都不止一个页面,这些页面就是利用超链接进行串接.超链接帮我们实现了网页与网 ...
- Java代码规范和质量检查插件-Checkstyle(官方资源)
其实Checkstyle是一个JAR包,然后第三方开发者开发了Eclipse/IDEA的插件. 官网: https://github.com/checkstyle/checkstyle Eclipse ...
- 【面试 hibernate】【第二篇】hibernate相关问题
1.hibernate工作原理[说一下你怎么理解的hibernate] hibernate是一个ORM对象关系映射的持久层框架,是对JDBC的轻量级封装. [可以不记,hibernate核心接口] 1 ...
- Thrift --- 支持双向通信
[问题] Thrift采用了C/S模型,不支持双向通信:client只能远程调用server端的RPC接口,但client端则没有RPC供server端调用,这意味着,client端能够主动与serv ...
- delphi中Record 和Packed Record的区别
Record 和Packed Record 第一种不带packed关键字的结构体表明编译器编译时要求进行字对齐,而第二种带packed关键字的结构体表明编译器编译该结构体时不需要进行字对齐,这种方式对 ...
- [转】 nginx rewrite规则
http://www.cnblogs.com/cgli/archive/2011/05/16/2047920.html 最近在VPS上尝试配置安装一个网站,VPS安装了LNMP(Linux+Nginx ...
- C++中的sort函数
(一)为什么要用c++标准库里的排序函数 Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于 ...
- 【转】Linux cp -a用法
cp file1 file1-bk ---------> 这样复制备份的话文件的属性(创建时间这些会变化) 要想不变化, cp -a file1 file-bk 加上一个 -a 这个参数就 ...