文档章节

富文本控件

 泊竹
发布于 2014/12/06 15:09
字数 522
阅读 724
收藏 6

  网络上的各种富文本控件总感觉和具体项目不太贴,所以我自己动手写了一个富文本控件,是用CoreText写的。现在开放出来供所有人借鉴和使用。我写了一些基本功能,你可以方便的任意加入自己想实现的功能。

你可以任意的使用、修改、扩展这个控件,请不要删除作者信息

使用时,别忘了引入CoreText库。

演示效果如图


调用方法代码如下:

1、显示图片

- (void)showImage
{
    UIFont *font = [UIFont systemFontOfSize:17];
    
    SJRichTextView *richTextView = [[SJRichTextView alloc] initWithFrame:CGRectMake(100, 50, 200, 80)];
    richTextView.textMaxWidth = 150;
    richTextView.textColor = [UIColor blackColor];
    richTextView.font = font;
    NSString *imageText = [SJRichTextInterpreter imgTextWithUrl:@"demoImage.png" size:CGSizeMake(50, 50)];
    richTextView.text = [NSString stringWithFormat:@"图片演示:%@", imageText];
    [self.view addSubview:richTextView];
}

2、显示文字(支持按行数计算高度和计算总文字高度)

- (void)showText
{
    UIFont *font = [UIFont systemFontOfSize:17];
    SJRichTextView *richTextView = [[SJRichTextView alloc] initWithFrame:CGRectMake(100, 150, 200, 71)];
    richTextView.textMaxWidth = 150;
    richTextView.textColor = [UIColor blackColor];
    richTextView.font = font;
    richTextView.text = @"文本演示文本演示文本演示文本演示文本演示文本演示文本演示文本演示文本演示文本演示文本演示文本演示文本演示文本演示文本演示文本演示文本演示文本演示文本演示文本演示文本演示文本演示文本演示";
    [self.view addSubview:richTextView];
    
    CGFloat minHeight = [richTextView heightForLineNumber:4];
    NSLog(@"四行文字的高度是:%f", minHeight);
    
    CGFloat maxHeight = [richTextView heightForMaxLine];
    NSLog(@"总文字高度是:%f", maxHeight);
}

3、显示表情

- (void)showEmotion
{
    UIFont *font = [UIFont systemFontOfSize:17];
    SJRichTextView *richTextView = [[SJRichTextView alloc] initWithFrame:CGRectMake(100, 300, 200, 80)];
    richTextView.textMaxWidth = 150;
    richTextView.textColor = [UIColor redColor];
    richTextView.font = font;
    richTextView.emotionIconWidth = font.lineHeight;
    richTextView.emotionIconHeight = font.lineHeight;
    richTextView.richTextViewDataSource = self;
    richTextView.text = @"表情演示:[唯美]";
    [self.view addSubview:richTextView];
}

#pragma mark SJRichTextViewDataSource
- (NSString *)imagePathWithEmotionString:(NSString *)emotionString
{
    if ([emotionString isEqualToString:@"唯美"]) {
        NSString *imagePath = [NSString stringWithFormat:@"%@/%@", [NSBundle mainBundle].resourcePath, @"demoImage.png"];
        return imagePath;
    }
    return nil;
}

4、显示链接

- (void)showURL
{
    UIFont *font = [UIFont systemFontOfSize:15];
    SJRichTextView *richTextView = [[SJRichTextView alloc] initWithFrame:CGRectMake(50, 400, 300, 80)];
    richTextView.textMaxWidth = 300;
    richTextView.textColor = [UIColor redColor];
    richTextView.font = font;
    richTextView.richTextViewDelete = self;
    NSString *urlText = [SJRichTextInterpreter urlTextWithUrl:@"http://www.baidu.com" DisplayString:@"百度"];
    richTextView.text = [NSString stringWithFormat:@"右边的文字是链接,点点看:%@", urlText];
    [self.view addSubview:richTextView];
}

#pragma mark SJRichTextViewDelegate
- (void)touchUrl:(NSString *)url
{
    NSURL *goURL = [NSURL URLWithString:url];
    if (goURL == nil) {
        return;
    }
    [[UIApplication sharedApplication] openURL:goURL];
}

demo项目下载地址:http://pan.baidu.com/share/home?uk=4012188959#category/type=0

© 著作权归作者所有

粉丝 90
博文 67
码字总数 13285
作品 0
徐汇
私信 提问
【OSC手机App技术解析】- 富文本列表的展示

大家都知道OSC的网页动态显示是需要多种颜色的才能达到需要的展示效果,如下图: 在iOS上官方SDK是不提供如此强大的富文本控件的,我在开发的过程中首先找到的是这个FTRichTextView第三方控件...

junwong
2012/06/26
2.6K
4
.NET快速信息化系统开发框架 V3.2->Web版本“产品管理”事例编辑界面新增KindEditor复文本编辑控件

  KindEditor是一套开源的HTML可视化编辑器,主要用于让用户在网站上获得所见即所得编辑效果,兼容IE、Firefox、Chrome、Safari、Opera等主流浏览器。KindEditor使用JavaScript编写,可以无...

80368704
2018/06/29
0
0
iOS 端富文本控件 - NudeIn

NudeIn NudeIn 是一个基于 UITextView ,书写风格类似于 masonry 的 iOS 端富文本控件,它采用优雅的声明式方法定义富文本控件,和编程式的不同,它所需的代码量相当短,且非常直观易用。 Us...

HJ-CAI
2018/06/03
412
0
EasyUI如何监听其它控件页面渲染完成的事件?

问题环境如下: 普通的增删改差业务模块。 点击该模块的菜单按钮,显示主页面(EasyUI的Grid数据列表,这时候,新增/修改的表单页面尚未加在) 当我第一次点击新增或者修改时,加载表单页面,...

程序员Joe
2015/06/01
3.2K
1
iOS文本布局探讨之三——使用TextKit框架进行富文本布局

iOS文本布局探讨之三——使用TextKit框架进行富文本布局 一、引言 关于图文混排,其实以前的博客已经讨论很多,在实际开发中,经常使用第三方的框架来完成排版的需求,其中RCLabel和RTLabel...

珲少
2016/09/10
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

如何递归计算目录中的所有代码行?

我们有一个PHP应用程序,并希望计算特定目录及其子目录下的所有代码行。 我们不需要忽略评论,因为我们只是想弄清楚。 wc -l *.php 该命令在给定目录中运行良好,但忽略子目录。 我当时认为...

技术盛宴
30分钟前
3
0
使用 try-with-resources 优雅关闭资源

我们知道,在 Java 编程过程中,如果打开了外部资源(文件、数据库连接、网络连接等、redis),我们必须在这些外部资源使用完毕后,手动关闭它们。 因为外部资源不由 JVM 管理,无法享用 JVM ...

七弦桐
36分钟前
4
0
04.深入浅出索引(上)

简单来说,索引的出现就是为了提高数据查询效率,就像书的目录一样。 索引的常见模型 索引实现的方式有很多种,所以这里就引入了索引模型的概念,可以用于提高读写效率的数据结构很多,比较常...

scgaopan
40分钟前
5
0
Redis哨兵、复制、集群的设计原理,以及区别

谈到Redis服务器的高可用,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制。 **哨兵(Sentinel):**可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的...

Java阿七
49分钟前
5
0
浅析laravel路由执行原理

目前很多文章已经对Laravel的执行原理做了详细介绍,这里只是为了个人做一下简单记录 首先看入口 index.php 关键的执行函数就是 handle方法 ,但是前面的几个预处理函数,包括了整合框架的大...

冻结not
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部