扩展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. 关于PHP创建接口及调用接口的简短例子(本地)

    ********************************************************************************************** /*这是P ...

  2. SpringMVC核心类和注解

    springMVC最重要的就是前端控制器DispatchServlet了.他是整个springMVC应用的核心. 需要将它配置在web.xml中. 1.DispatchServlet的配置 <! ...

  3. Codeforces Round #447 (Div. 2) B. Ralph And His Magic Field 数学

    题目链接 题意:给你三个数n,m,k;让你构造出一个nm的矩阵,矩阵元素只有两个值(1,-1),且满足每行每列的乘积为k,问你多少个矩阵. 解法:首先,如果n,m奇偶不同,且k=-1时,必然无解: 设 ...

  4. vue学习之组件

    组件从注册方式分为全局组件和局部组件. 从功能类型又可以分为偏视图表现的(presentational)和偏逻辑的(动态生成dom),推荐在前者中使用模板,在后者中使用 JSX 或渲染函数动态生成组件 ...

  5. 51nod--1069 Nim 游戏(博弈论)

    题目: 有N堆石子.A B两个人轮流拿,A先拿.每次只能从一堆中取若干个,可将一堆全取走,但不可不取,拿到最后1颗石子的人获胜.假设A B都非常聪明,拿石子的过程中不会出现失误.给出N及每堆石子的数量 ...

  6. Unable to find header files

    在本模块导出头文件时,可以使用如下方式: LOCAL_EXPORT_C_INCLUDE_DIRS := $(MY_DIRECTORY_PATH) LOCAL_EXPORT_C_INCLUDES := ...

  7. MySQL视图,函数,触发器,存储过程

    1. 视图 视图是一个虚拟表,它的本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时表摘出来, ...

  8. figlet

    figlet https://aotu.io/notes/2016/11/22/figlet/  教程 npm i figlet --save-dev var figlet = require('fi ...

  9. vue在jsx中使用for循环

    return <div domPropsInnerHTML="titles" style={{ color: 'red', fontSize: '14px' }}> { ...

  10. [转]sourcetree 安装-Windows

    https://blog.csdn.net/weialemon/article/details/78833419 sourcetree官网地址:https://www.sourcetreeapp.co ...