富文本(TTTAttributedLabel是一个替代,UILabel提供了一种简单的方式来高效地呈现属性字符串。作为奖励,它还支持链接嵌入,自动与NSTextCheckingTypes手动通过指定)
2017-02-23 10:04
2246 查看
转自:https://github.com/TTTAttributedLabel/TTTAttributedLabel
一个下拉更换为
即使在iOS 6中
自动数据检测
手动链接嵌入
标记属性字符串的样式继承
标签中链接的自定义样式
长按手势除了点击手势的链接
它还包括高级段落样式属性:
iOS 8+ / tvOS 9+
Xcode 7+
从版本1.10.0,
如果需要帮助,请使用Stack
Overflow。(Tag
如果你想问一个一般的问题,使用Stack
Overflow。
如果您发现错误,请打开一个问题。
如果您有功能请求,请打开问题。
如果您想贡献,请提交拉取请求。
CocoaPods是推荐的安装方法
首先,我们创建和配置标签,与实例化的方式相同
dolar”将以粗体显示,使得标签将读作“Lorem ipsum dolar sit amet”,大小为14Helvetica,具有深灰色。
Builder中配置标签。但是,如果您在建立时看到这些警告...
...那么你可能使用
安装
安装
除了支持富文本,
执行代理方法
- (void)attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL
*)url{
if ([url.schemeisEqualToString:@"http"]) {
NSNumber *vId = (NSNumber*)[url queryParam:@"id"];
if([url.hostisEqualToString:@"hotgood-detail"]){
//跳转页面
}else {
//跳转页面
}
}
...或克隆此repo并构建和运行/测试
一个下拉更换为
UILabel支持的属性,数据检测器,链接等
TTTAttributedLabel是一个替代,
UILabel提供了一种简单的方式来高效地呈现属性字符串。作为奖励,它还支持链接嵌入,自动与
NSTextCheckingTypes手动通过指定URL,地址,电话号码,事件或公共交通信息的范围。
即使在iOS 6中
UILabel收到支持
NSAttributedString,
TTTAttributedLabel有几个独特的功能:
自动数据检测
手动链接嵌入
标记属性字符串的样式继承
标签中链接的自定义样式
长按手势除了点击手势的链接
它还包括高级段落样式属性:
attributedTruncationToken
firstLineIndent
highlightedShadowRadius
highlightedShadowOffset
highlightedShadowColor
lineHeightMultiple
lineSpacing
minimumLineHeight
maximumLineHeight
shadowRadius
textInsets
verticalAlignment
要求
iOS 8+ / tvOS 9+Xcode 7+
辅助功能
从版本1.10.0,TTTAttributedLabel通过
UIAccessibilityElement协议支持VoiceOver 。每个链接可以单独选择,
accessibilityLabel等于其字符串值,以及相应
accessibilityValue的URL,电话号码和日期链接。希望更改此行为或提供自定义值的开发人员应创建子类并覆盖
accessibilityElements。
通讯
如果需要帮助,请使用StackOverflow。(Tag
tttattributedlabel)
如果你想问一个一般的问题,使用Stack
Overflow。
如果您发现错误,请打开一个问题。
如果您有功能请求,请打开问题。
如果您想贡献,请提交拉取请求。
安装
CocoaPods是推荐的安装方法TTTAttributedLabel。只需将以下行添加到您的
Podfile:
# Podfile 荚' TTTAttributedLabel “
用法
TTTAttributedLabel可以显示纯文本和属性文本:只需传递一个
NSString或
NSAttributedString到
setText:设置器。切勿分配到
attributedText酒店。
// NSAttributedString TTTAttributedLabel * attributedLabel = [[TTTAttributedLabel alloc ] initWithFrame:CGRectZero ]; NSAttributedString * attString = [[ NSAttributedString alloc ] initWithString:@“ Tom Bombadil ” 属性: @ { (id)kCTForegroundColorAttributeName:(id)[UIColor redColor ]。CGColor, NSFontAttributeName:[UIFont boldSystemFontOfSize:16 ], NSKernAttributeName:[ NSNull null ], (id)kTTTBackgroundFillColorAttributeName:(id)[UIColor greenColor ]。CGColor }]; //直接设置属性字符串,而不继承标签的任何其他文本 //属性。 attributLabel.text = attString;
// NSString TTTAttributedLabel * label = [[TTTAttributedLabel alloc ] initWithFrame:CGRectZero ]; label.font = [UIFont systemFontOfSize:14 ]; label.textColor = [UIColor darkGrayColor ]; label.lineBreakMode = NSLineBreakByWordWrapping ; label.numberOfLines = 0 ; //如果你为你的文本使用一个简单的NSString, //最后分配给`text`属性,所以它可以继承其他标签属性。 NSString * text = @“ Lorem ipsum dolor sit amet ” ; [label setText: text afterInheritingLabelAttributesAndConfiguringWithBlock: ^ NSMutableAttributedString *(NSMutableAttributedString * mutableAttributedString){ NSRange boldRange = [[mutableAttributedString string ] rangeOfString:@“ ipsum dolor ” options:NSCaseInsensitiveSearch ]; NSRange strikeRange = [[mutableAttributedString string ] rangeOfString:@“ sit amet ” options:NSCaseInsensitiveSearch ]; // Core Text API使用C函数,而不需要直接连接到UIFont。请参阅Apple的“核心文本编程指南”,了解如何配置字符串属性。 UIFont * boldSystemFont = [UIFont boldSystemFontOfSize:14 ]; CTFontRef字体= CTFontCreateWithName((__bridge CFStringRef)boldSystemFont。的fontName,boldSystemFont。的pointsize,NULL); if(font){ [mutableAttributedString addAttribute:(NSString *)kCTFontAttributeName value:(__bridge id)font range: boldRange]; [mutableAttributedString addAttribute:kTTTStrikeOutAttributeName value: @ YES range: strikeRange]; CFrelease(font); }} return mutableAttributedString; }];
首先,我们创建和配置标签,与实例化的方式相同
UILabel。在使用
-setText:afterInheritingLabelAttributesAndConfiguringWithBlock:方法时,在标签上设置的任何文本属性都将继承为基本属性。在该示例中,子串“ipsum
dolar”将以粗体显示,使得标签将读作“Lorem ipsum dolar sit amet”,大小为14Helvetica,具有深灰色。
IBDesignable
TTTAttributedLabel包含
IBInspectable和
IB_DESIGNABLE注释以在Interface
Builder中配置标签。但是,如果您在建立时看到这些警告...
IB Designables: Failed to update auto layout status: Failed to load designables from path (null) IB Designables: Failed to render instance of TTTAttributedLabel: Failed to load designables from path (null)
...那么你可能使用
TTTAttributedLabel作为静态库,它不支持IB注释。一些解决方法包括:
安装
TTTAttributedLabel与使用的CocoaPods一个动态的框架
use_frameworks!在你的
Podfile,或者与迦太基
安装
TTTAttributedLabel它的源文件拖放到你的项目
链接和数据检测
除了支持富文本,TTTAttributedLabel还可以自动检测日期,地址,网址,电话号码,公交信息的链接,并允许您嵌入自己的链接。
label.enabledTextCheckingTypes = NSTextCheckingTypeLink ; //当标签文本随后更改时自动检测链接 label.delegate = self; //当用户点击链接时调用委托方法(参见`TTTAttributedLabelDelegate`协议) label.text = @“ Fork me on GitHub!(https://github.com/mattt/TTTAttedLabel/)” ; //存储库URL将被自动检测和链接 NSRange range = [label.text rangeOfString:@“ me ” ]; [label addLinkToURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://hotgood-detail?id=%@",model.roomId] withRange: range]; //在子字符串中嵌入自定义链接
- (void)attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL
*)url{
if ([url.schemeisEqualToString:@"http"]) {
NSNumber *vId = (NSNumber*)[url queryParam:@"id"];
if([url.hostisEqualToString:@"hotgood-detail"]){
//跳转页面
}else {
//跳转页面
}
}
演示
pod test TTTAttributedLabel
...或克隆此repo并构建和运行/测试
Espressos项目在Xcode看到
TTTAttributedLabel在行动。如果你没有的CocoaPods安装,以抓住它
[sudo] gem install cocoapods。
cd示例 pod安装 打开Espressos.xcworkspace
执照
TTTAttributedLabel根据MIT许可证提供。有关详细信息,请参阅LICENSE文件。
相关文章推荐
- 富文本(TYAttributedLabel 简单,强大的属性文本控件(无需了解CoreText),支持图文混排显示,支持添加链接,image和UIView控件,支持自定义排版显示)
- 一个让label里字符串自动换行的属性
- iOS切圆角的方式 第一种方法:通过设置layer的属性 最简单的一种,但是很影响性能,一般在正常的开发中使用很少. UIImageView *imageView = [[UIImag
- 使用jQuery匹配文档中所有的li元素,返回一个jQuery对象,然后通过数组下标的方式读取jQuery集合中第1个DOM元素,此时返回的是DOM对象,然后调用DOM属性innerHTML,读取该元素 包含的文本信息
- 在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别。我们给出一种最简的的加密方法,对给定的一个字符串,把其中
- TYAttributedLabel——简单,强大的iOS属性文本控件
- 在iOS中UILabel作为一个文本标签,在实现程序中几乎每个页面都会用到UILabel,UILabel的常用属性:textColor(文本颜色),text(文本值),font(文本字体),textA
- 开机默认设置一个widge在指定的屏幕上和自动在桌面上创建一个应用的快捷方式的方法
- C#中通过一个对象,得到属性(字符串形式)的值
- Flex中通过设置labelPlacement属性设置RadioButton控件文本标签排列位置的例子
- 一个简单的自定义控件 支持自动换行的TextBox / Lable
- 用 Java 技术创建 RESTful Web (服务 JAX-RS:一种更为简单、可移植性更好的替代方式)
- 请实现一个队列,既可以存放整数,又可以存放字符串。简单的说,队列是一种数据结构,按照先进先出的顺序管理进、出队列的元素
- JavaScript中通过数组索引方式访问和属性名方式访问对象属性的一个小小误区
- 大部分带有字符串的编程语言中,用于去掉字符串头部和尾部的空格的方法,往往都会作为一个标准提供..trim
- 11_5_1创建一个集合类People ,它是下述Person类的集合,该集合中的项可以通过一个字符串索引符来访问,该字符串索引符是人的姓名,与Person.Name 属性相同:
- 通过编码方式使用性能计数器来进行性能计数的一个简单例子 - ZT
- Flex中通过设置textAlign和labelStyleName样式设置FormItem容器中标签文本对齐方式的例子
- 开始想使用f#,只因为它提供了另一种思考问题的方式,框架架构师应该会多门语言的,就选你作为我的第二种吧。
- 10_9_1编写代码,定义一个基类MyClass,其中包括虚礼方法GetString(),这个方法返回存储在受保护字段myString中的字符串,该字段可以通过只写公共属性ContainedStrin