UILabel上展示不同样式的文字(NSAttributedString)

NSMutableAttributedString *titleAttriString = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@”¥200现金券”]];

[titleAttriString addAttribute:NSFontAttributeName

value:[UIFont systemFontOfSize:25]

range:NSMakeRange(0, titleAttriString.length - 3)];

[titleAttriString addAttribute:NSFontAttributeName

value:[UIFont systemFontOfSize:14]

range:NSMakeRange(titleAttriString.length - 3,3)];

[titleLb setAttributedText:titleAttriString];

注意:

NSMakeRange(文字的起始位置,文字长度)

换行的实现

如果想要计算NSAttributedString所要的size,就需要用到这个API:

CTFramesetterSuggestFrameSizeWithConstraints,用NSString的sizeWithFont算多行时会算不准的,因为在CoreText里,行间距也是你来控制的。

设置行间距和换行模式都是设置一个属性:kCTParagraphStyleAttributeName,这个属性里面又分为很多子

属性,其中就包括

kCTLineBreakByCharWrapping

kCTParagraphStyleSpecifierLineSpacingAdjustment

设置如下:

//————-取消注释,实现换行————-

CTParagraphStyleSetting lineBreakMode;

CTLineBreakMode lineBreak = kCTLineBreakByCharWrapping; //换行模式

lineBreakMode.spec = kCTParagraphStyleSpecifierLineBreakMode;

lineBreakMode.value = &lineBreak;

lineBreakMode.valueSize = sizeof(CTLineBreakMode);

//行间距

CTParagraphStyleSetting LineSpacing;

CGFloat spacing = 4.0; //指定间距

LineSpacing.spec = kCTParagraphStyleSpecifierLineSpacingAdjustment;

LineSpacing.value = &spacing;

LineSpacing.valueSize = sizeof(CGFloat);

CTParagraphStyleSetting settings[] = {lineBreakMode,LineSpacing};

CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(settings, 2); //第二个参数为settings的长度

[attriString addAttribute:(NSString *)kCTParagraphStyleAttributeName

value:(id)paragraphStyle

range:NSMakeRange(0, attriString.length)];

时间: 2024-10-25 06:25:54

UILabel上展示不同样式的文字(NSAttributedString)的相关文章

将且仅将UILabel上的所有数字变色指定的字体颜色<转>

先提出一个场景,一个UILabel上面有各种数字字符中文字符以及字母等,现在我们想将其中的数字找出来并且变为和其他字符不同的颜色. 这里提出一个解决方法,通过for循环来截取一个一个字符,判断其是不是0-9的数字,如果是就设置他的字体属性,我们使用了 NSMutableAttributedString实现富文本(带属性的字符串). NSAttributedString的使用方法,跟NSMutableString,NSString类似 1.使用方法: 为某一范围内文字设置多个属性 - (void)

移动端之在不同尺寸大小的手机上展示同一效果解决方案 by FungLeo

移动端之在不同尺寸大小的手机上展示同一效果解决方案 by FungLeo 前言,反思 在之前的项目当中,我在CSS中设置html{font-size: 62.5%;},也就是设置为10px,然后全站根据这个根植,来设置rem单位的样式.这样虽然解决了很多的问题.但是在面对不同宽度的手机的时候,还是需要去自适应设置很多的内容.当然,因为手机分辨率的不同,我们可以自由的将页面设置在320(iphone5s)-414(iphone6plus)这样的范围内还是很合适的.但是,奇葩手机年年有,华为meta

jenkins上展示html报告【转载】

转至博客:上海-悠悠 前言 在jenkins上展示html的报告,需要添加一个HTML Publisher plugin插件,把生成的html报告放到指定文件夹,这样就能用jenkins去读出指定文件夹的报告了. 一.构建后操作 1.前面执行完测试用例后,可以用"添加构建后操作步骤",读出html报告文件 2.如果你的展开后有Publish THML reports这个选项就能直接添加了,没有就看下一步. 二.添加HTML Publisher plugin插件 1.打开系统管理-管理插

紧接上篇,jQuery调用jsonp,并且在页面上展示

在上篇中提到了spring4.1+支持jsonp的调用,做了个例子,用来在页面上展示jsonp: (js写的丑了点,本人后端出生,前端大侠们轻拍~) 1 var Menu = function () { 2 3 return { 4 getMenuData: function (json) { 5 console.log(json); 6 var data = json.data; 7 var html = ""; 8 for (var i = 0 ; i < data.leng

Android之同一个TextView设置不同样式的文字

需求分析: 很多时候,我们需要在视图中显示不同样式的文字,但是为了减少viewgroup层级,不想新增很多个TextView控件来实现不同样式的文字. 那么有没有一种方式能够在同一个TextView控件中实现多种自定义的样式的文字呢? 答案是肯定的,下面就让我们来做一个此问题的实践实验. 实践过程: 首先我们在布局xml文件中定义了三个TextView控件,它们的定义如下: <TextView android:id="@+id/annualized_Rate_text" andr

Lodop6 以上打印控件使用,详参考自带说明文档,打印样式及文字大小要特殊设置一下

<link href="../css/cssprint.css" rel="stylesheet" /> <script src="../Lodop/LodopFuncs.js"></script> <style id="style1"> table { font-size: 9pt; font-weight: normal; color: #000000 ; text-deco

UIButton上同时显示图片和文字的方法

参考:http://blog.csdn.net/qijianli/article/details/8152726 不过有个问题,就是我使用时不能改变文字的颜色,后来修改了一下方法,如下: 定义一个UIButton+Manager文件,在.h #import <UIKit/UIKit.h> @interface UIButton (UIButtonImageWithLable) - (void) setImage:(UIImage *)image withTitle:(NSString *)ti

DIV CSS鼠标经过悬停在图片上时图片上方显示文字(转)

DIV CSS鼠标悬停在没有文字内容图片上时图片上方显示文字,完全是纯css div实现.CSS实现鼠标悬停放图片上方时显示美化内容. 原始图片显示没有文字在上方,当鼠标经过悬停时显示文字并且文字背景为半透明.可以使用纯DIV+CSS实现鼠标悬停图片上显示文字内容. 纯div+css实现第一张图片没有文字内容,鼠标悬停时出现第二张图那样效果 使用div css实现鼠标悬停图片上方时显示文字内容原理: 首先我们设置一个盒子对象,并且将图片使用style标签内设置为CSS背景图片,同时设置该对象ht

Android项目实战(十四):TextView显示html样式的文字

原文:Android项目实战(十四):TextView显示html样式的文字 项目需求: TextView显示一段文字,格式为:白雪公主(姓名,字数不确定)向您发来了2(消息个数,不确定)条消息 这段文字中名字和数字的长度是不确定的,还要求名字和数字各自有各自的颜色. 一开始我想的是用(转) SpannableString与SpannableStringBuilder来实现,因为它可以实现一段文字显示不同的颜色 但是貌似它只能固定哪些位置的文字显示什么样式,于是乎放弃. 然后就想到了用 Html