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 ...
随机推荐
- saltstack 开发相关命令记录
SALT API开发相关命令记录. 查看当前的salt key信息salt-key -L 测试被控主机的连通性salt '*' test.ping 远程命令执行测试salt '*' cmd.run ' ...
- Codeforces Round #321 (Div. 2) E
终于补好了. 题目链接: http://codeforces.com/contest/580/problem/E E. Kefa and Watch time limit per test 1 sec ...
- 关于Properties 集 添加数据 遍历数据
public static void fun1(){ Properties v = new Properties(); v.setProperty("a","1" ...
- HDD磁盘,非4K无以致远
机械硬盘的未来要靠高容量作为依托,在财报中,希捷表示未来18个月内它们将推出14和16TB机械硬盘,而2020年20TB机械硬盘就将诞生.也有资料显示,3.5英寸100TB硬盘大概在2025年就能面世 ...
- ssh 卡主
偶尔会遇到这样的现象 ssh 登录一台远程机器,显示下面的信息然后hang在那 Connecting to 192.168.137.102:22... Connection established. ...
- OHIFViewer meteor build 问题
D:\Viewers-master\OHIFViewer>meteor build --directory d:/h2zViewerC:\Users\h2z\AppData\Local\.met ...
- Solidworks如何绘制装饰螺纹线
1 插入-注解,装饰螺纹线 2 绘制装饰螺纹线,选择螺纹的边线,标准选择ISO,下面可以选择的范围就确定了(M6的孔,只能选择M8的螺纹或者M10的螺纹),画好之后在3D图中并没有明确的螺纹样式 ...
- VBA 把电信的电话费用表转换成部门电话费用明细表(图文)
今天同事要做一个这种工作.就是把电信发来的费用表,转换成按部门划分的电话费用表,100多部电话,假设一个个去核对,真还是须要些时间的.问题来了,有更好的方法么,我们来看一下. 电信公司给的费用明细是这 ...
- android 内部文件读取
Android 文件管理方法 Android使用的是基于Linux的文件系统,对于文件的訪问和管理是通过权限设置来限制的. 在Linux系统中,文件权限分别描写叙述了创建者.同组用户和其它用户对文件的 ...
- winform中使用ReportViewer的时候,找不到报表数据面板.
最近在做winform的报表项目,看人家教程里都有报表数据面板,可我的怎么都找不到,我的是VS2012,最后终于找到,首先必须在报表设计TAB上(选中它),然后选择视图->报表数据