属性化字符串的使用

如果我们要在label或者textView上显示一段文字,比如:“y = ax2 + bx +c”,我们预想的结果是这样的

即让一个label或者textView上显示的文本能展示多种颜色,这时候属性化字符串就显得非常有用了。

-(NSAttributedString
*)getFormulaAttributedTextWithStr:(NSString *)str

//这个传入进来的str就是我们要展示多种颜色的文本“y = ax2 + bx +c”

{

NSMutableAttributedString *attributedStr =
[[NSMutableAttributedStringalloc] initWithString:str];//首先创建NSMutableAttributedString类型的串

UIColor *firstColor = [colorArray objectAtIndex:0];

UIColor *secondColor =
[colorArray objectAtIndex:1];

UIColor *thirdColor = [colorArray objectAtIndex:2];//获得要展示的颜色

NSArray *array = [str
componentsSeparatedByString:@"
"];

int length = (int)[[array
objectAtIndex:0] length]
+ (int)[[array objectAtIndex:1] length] + 2 * 1;

NSRange oneRange = NSMakeRange(length,[[array objectAtIndex:2] length] - 2);//获得a在字符串中的位置和长度

int twolenth;

NSRange
twoRange = NSMakeRange(twolenth, (int)[[array objectAtIndex:4] length] - 1);//获得b在字符串中的位置和长度

//以下三条addAttributed代码即是为指定位置的字符串添加颜色属性

[attributedStr addAttribute:(NSString *)NSForegroundColorAttributeName

value:(id)firstColor.CGColor

range:oneRange];

[attributedStr addAttribute:(NSString
*)NSForegroundColorAttributeName

value:(id)secondColor.CGColor

range:twoRange];

[attributedStr
addAttribute:(NSString *)NSForegroundColorAttributeName

value:(id)thirdColor.CGColor

range:NSMakeRange([str length]-[[array lastObject] length],[[array
lastObject] length])];

return attributedStr;

}

属性化字符串的使用,码迷,mamicode.com

时间: 2024-10-19 19:35:57

属性化字符串的使用的相关文章

带属性的字符串 NSMutableAttributedString/NSAttributedString

由于iOS7新出的NSTextStorge是NSMutableAttributedString的子类,所以要用好NSTextStorage,首先要学好NSMutableAttributedString和NSAttributedString. 按个人的理解,NSAttributedString是一个带有属性的字符串,通过该类可以灵活地操作和呈现多种样式的文字数据. alignment //对齐方式 firstLineHeadIndent //首行缩进 headIndent //缩进 tailInd

ATL属性化

从VS.Net开始,MS开始支持属性化选项(这个选项位于ATL工程向导中的复选框“Attributed”),属性化使得接口声明非常干净清爽.在大规模的COM工程,这点很重要,使得一看到声明就知道提供了哪些接口,而不是在一大堆乱糟糟的派生类和模版类里面找.但是本质上并没有差别,只不过VS把一些代码隐藏起来而已.以下可以看出两者接口声明之间的差异 参考网址: http://libo.deng.blog.163.com/blog/static/40157422200893091523933/

C#通过属性名字符串获取、设置对象属性值

目录 #通过反射获取对象属性值并设置属性值 #获取对象的所有属性名称及类型 #判断对象是否包含某个属性 #通过反射获取对象属性值并设置属性值 0.定义一个类 public class User { public int Id { get; set; } public string Name { get; set; } public string Age { get; set; } } 1.通过属性名(字符串)获取对象属性值 User u = new User(); u.Name = "lily&

vue组件属性中字符串如何拼接变量?

不得不说,对于水平只有jquery的vue初学者来说,vue的图片加载实现确实挺坑的,在文档中也没有看到说明.经过百度之后终于知道了什么情况. 首先: 这样是没问题的: <img src="./../assets/avatar.png" /> 但是我把地址提取出来,当道 data 里之后就不行了. <img :src="logoSrc" > export default { data () { return { logoSrc: './../

NSMutableAttributedString可变字符串使用

//原始数据字符串 NSString *string = @"我是好人我是好人我是个好人额鹅鹅鹅鹅鹅鹅饿哇哇哇哇哇哇哇"; // 创建可变属性化字符串 NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:string]; //改变字符串当中从第18位置向后的10位数的字体 UIFont *smallFont = [UIFont systemFontOfSize

IOS基础-UIButton

思来想去,UIButton就是一个按钮,就是平时我们用手指点击一个控件,然后有相应的事件产生,点击的时候或许还会产生颜色上的变化,这个就叫做UIbutton. 它可以显示文字,也可以显示图片,也可以动态调整内部的图片和文字,而且也可以添加属性化字符串,至于属性化字符串是什么,不懂的话没关系,后面我会讲到. UIButton有三种状态: Normal(普通状态) 默认情况(default) 对应的枚举常量:UIControlStateNormal Highlighted(高亮状态) 按钮被按下去的

iOS-Core-Animation-Advanced-Techniques(三)(转)

专用图层 复杂的组织都是专门化的--Catharine R. Stimpson 到目前为止,我们已经探讨过CALayer类了,同时我们也了解到了一些非常有用的绘图和动画功能.但是Core Animation图层不仅仅能作用于图片和颜色而已.本章就会学习其他的一些图层类,进一步扩展使用Core Animation绘图的能力. CAShapeLayer 在第四章『视觉效果』我们学习到了不使用图片的情况下用CGPath去构造任意形状的阴影.如果我们能用同样的方式创建相同形状的图层就好了. CAShap

CoreAnimation3-专用图层

CAShapeLayer CAShapeLayer是一个通过矢量图形而不是bitmap来绘制的图层子类.你指定诸如颜色和线宽等属性,用CGPath来定义想要绘制的图形,最后CAShapeLayer就自动渲染出来了.当然,你也可以用Core Graphics直接向原始的CALyer的内容中绘制一个路径,相比直下,使用CAShapeLayer有以下一些优点: 渲染快速.CAShapeLayer使用了硬件加速,绘制同一图形会比用Core Graphics快很多. 高效使用内存.一个CAShapeLay

iOS Core Animation Advanced Techniques(三):专用图层

到目前为止,我们已经探讨过CALayer类了,同时我们也了解到了一些非常有用的绘图和动画功能.但是Core Animation图层不仅仅能作用于图片和颜色而已.本章就会学习其他的一些图层类,进一步扩展使用Core Animation绘图的能力. CAShapeLayer 在第四章『视觉效果』我们学习到了不使用图片的情况下用CGPath去构造任意形状的阴影.如果我们能用同样的方式创建相同形状的图层就好了. CAShapeLayer是一个通过矢量图形而不是bitmap来绘制的图层子类.你指定诸如颜色