扩展NSAttributedString

简单的实现方法是为NSAttributedString 添加一个category。

然后为此category添加额外的方法。

具体实现如下:

[代码]c#/cpp/oc代码:

@interface NSAttributedString (Hyperlink)

    +(id)hyperlinkFromString:(NSString*)inString withURL:(NSURL*)aURL;

@end

@implementation NSAttributedString (Hyperlink)

+(id)hyperlinkFromString:(NSString*)inString withURL:(NSURL*)aURL

{

    NSMutableAttributedString* attrString = [[NSMutableAttributedString alloc] initWithString: inString];

    NSRange range = NSMakeRange(0, [attrString length]);

    [attrString beginEditing];

    [attrString addAttribute:NSLinkAttributeName value:[aURL absoluteString] range:range];

    // make the text appear in bl

    [attrString addAttribute:NSForegroundColorAttributeName value:[NSColor blueColor] range:range];

16

 

17

    // next make the text appear with an underline

18

    [attrString addAttribute:

            NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:NSSingleUnderlineStyle] range:range];

    [attrString endEditing];

    return [attrString autorelease];

}

@end

NSTextField中添加超链接

[代码]c#/cpp/oc代码:

-(void)setHyperlinkWithTextField:(NSTextField*)inTextField

{

    // both are needed, otherwise hyperlink won't accept mousedown

    [inTextField setAllowsEditingTextAttributes: YES];

    [inTextField setSelectable: YES];

    NSURL* url = [NSURL URLWithString:@\"http://www.apple.com\"];

    NSMutableAttributedString* string = [[NSMutableAttributedString alloc] init];

    [string appendAttributedString: [NSAttributedString hyperlinkFromString:@\"Apple Computer\" withURL:url]];

    // set the attributed string to the NSTextField

    [inTextField setAttributedStringValue: string];

    [string release];

}

NSTextView中添加超链接

[代码]c#/cpp/oc代码:

-(void)setHyperlinkWithTextView:(NSTextView*)inTextView

{    // create the attributed string

    NSMutableAttributedString *string = [[NSMutableAttributedString alloc] init];

05

 

06

    // create the url and use it for our attributed string

07

    NSURL* url = [NSURL URLWithString: @\"http://www.apple.com\"];

    [string appendAttributedString:[NSAttributedString hyperlinkFromString:@\"Apple Computer\" withURL:url]];

    // apply it to the NSTextView's text storage

    [[inTextView textStorage] setAttributedString: string];

    [string release];

}

NSTextField/NSTextView中显示超链接以及NSMutableAttributedString用法的更多相关文章

  1. WPF中动态更新TextBlock文字中的超链接,文本

    1.------------------------------------------------------------------------- 修改超链接的文本文字: <TextBloc ...

  2. (转)Linux中显示空闲内存空间的free命令的基本用法

    这篇文章主要介绍了Linux系统中free命令的基本用法,用free命令查看内存空余信息是Linux系统入门学习中的基础知识,需要的朋友可以参考下   free 命令显示系统使用和空闲的内存情况,包括 ...

  3. html中的alt和title用法区别

    html中的alt和title用法区别 首先明确一下概念,alt是html标签的属性,而title既是html标签,又是html属性.title标签这个不用多说,网页的标题就是写在<title& ...

  4. 我给女朋友讲编程html系列(3) --html中的超链接标签-a标签 和 框架frame与框架集frameset

    我们浏览网页的时候,当单击某段文字或图片时,就会打开一个新的网页,这里面就使用了超链接. 就比如下图是一个导航类网页,当你单击某个链接就会打开新的网页. 比如,我拿我的qq空间“金河访谈”举例,新建一 ...

  5. servlet中doGet()和doPost()的用法

    转自:https://blog.csdn.net/qq_38963960/article/details/79468182 1.servlet中doGet()和doPost()的用法 一般来说我们是用 ...

  6. Delphi中stringlist分割字符串的用法

    Delphi中stringlist分割字符串的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 1.CommaT ...

  7. SQL Server中Rowcount与@@Rowcount的用法 和set nocount on 也会更新@@Rowcount

    rowcount的用法: rowcount的作用就是用来限定后面的sql在返回指定的行数之后便停止处理,比如下面的示例, set rowcount 10select * from 表A 这样的查询只会 ...

  8. Linq中关键字的作用及用法

    Linq中关键字的作用及用法 1.All:确定序列中的所有元素是否都满足条件.如果源序列中的每个元素都通过指定谓词中的测试,或者序列为空,则为 true:否则为 false. Demo: 此示例使用 ...

  9. iOS开发小技巧--即时通讯项目:使用富文本在UILabel中显示图片和文字;使用富文本占位显示图片

    Label借助富文本显示图片 1.即时通讯项目中语音消息UI的实现,样式如图: 借助富文本在UILabel中显示图片和文字 // 1.创建一个可变的富文本 NSMutableAttributedStr ...

随机推荐

  1. Hive_1

    Sqoop实现Hbase和关系型数据库的数据互导 Zookeeper 配置的更新,文件的命名 Hive是建立在Hadoop之上为了减少MapReduce jobs编写工作的批处理系统,HBase是为了 ...

  2. python3 字典常见用法总结

    python3 字典常见用法总结 Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字典也被称作关联数组或哈希表 ...

  3. 【转】Java中的static关键字解析

    一.static关键字的用途 在<Java编程思想>P86页有这样一段话: “static方法就是没有this的方法.在static方法内部不能调用非静态方法,反过来是可以的.而且可以在没 ...

  4. python爬虫解决编码问题

    参考 https://blog.csdn.net/qq_38008452/article/details/80423436 问题 解决方法 加上encoding='utf-8'

  5. 【easy】118.119.杨辉三角

    这题必会啊!!! 第一题118. class Solution { public: vector<vector<int>> generate(int numRows) { ve ...

  6. 【原创】数据库基础之Mysql(1)常用命令

    1 创建用户 CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 比如 create user 'test_user'@'%' identi ...

  7. List的分组,求和,过滤操作

    package ---; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; /* ...

  8. 如何新建PDF文档,新建PDF文档的方法

    新建PDF文件的话,有两种方式,一种是直接通过使用PDF编辑器http://bianji.xjpdf.com/来新建PDF文件,,还有一种就是将PDF文件转换成Word文件,然后在Word文件中添加, ...

  9. bat路径中有空格

    例如bat文件中写 C:/Program Files (x86)/Google/Chrome/Application/chrome.exe ./html/index.html pause   会报错, ...

  10. javascript 通过模块模式实现代码访问控制

    <script type="text/javascript"> // 在匿名函数中使用var关键字 (function(){ var privateField = 42 ...