TextKit简单示例

效果

源码

https://github.com/YouXianMing/Animations

//
//  TextKitLoadImageController.m
//  Animations
//
//  Created by YouXianMing on 16/4/10.
//  Copyright © 2016年 YouXianMing. All rights reserved.
//

#import "TextKitLoadImageController.h"
#import "AttributedStringInitConfig+Constructor.h"
#import "JSAnimatedImagesView.h"
#import "UIView+SetRect.h"
#import "GCD.h"@interface TextKitLoadImageController () <JSAnimatedImagesViewDataSource>@property (nonatomic, strong) JSAnimatedImagesView  *JSView;
@property (nonatomic, strong) NSArray               *JSViewDataSource;@end@implementation TextKitLoadImageController- (void)setup {[super setup];NSString *str = @"这是发生在阿拉斯加麦肯莱国家公园的事,这个公园有日本的四国那么大,却只有一个为观光客开设的游客中心,位置就在原野正中央,公园唯一的一条道路上,每天都有许多观光客利用这个游憩场所。\n这附近是北极地松鼠的栖息地,所以每当有观光客下车,地松鼠就会跑过来讨东西吃,完全不怕人,公园管理员一再呼吁游客不要喂食地松鼠,但不管来自哪个国家的人,看到可爱机伶的地松鼠,还是会忍不住丢东西给它们吃。\n有一年,公园里竖着一个奇怪的告示牌。为什么说它奇怪呢?因为这个告示牌只有十公分高,不弯腰下去的话根本看不到,牌子开头就写着:“地松鼠们!”原来,这是写给地松鼠看的警告。\n“......你们再一直吃着人类给的食物,就会越来越胖,最后跑不动,就只好被金雕或是熊吃掉......”一想到好奇的观光客发出苦笑的脸,让我不禁莞尔。又想到在日本的动物园中,看到游客不断地往熊的笼子里丢食物,挂在旁边的“请勿喂食”标示,看起来是那么的无力。\n有人看到动物就自然而然想喂食,这种事情大家都清楚,但也有人率直的认为那是不对的行为。坚持真理是很辛苦的,不如多点想象空间,用小小的幽默来劝服人心。";NSTextStorage *storage = [[NSTextStorage alloc] initWithString:str attributes:[AttributedStringInitConfig heitiSC]];// 管理器NSLayoutManager *layoutManager = [NSLayoutManager new];[storage addLayoutManager:layoutManager];// 显示的容器(与UITextView对应)NSTextContainer *textContainer = [NSTextContainer new];CGSize size                    = CGSizeMake(Width - 20, MAXFLOAT);textContainer.size             = size;[layoutManager addTextContainer:textContainer];UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(10, 10, Width - 20, self.contentView.height - 20)textContainer:textContainer];textView.scrollEnabled                = YES;textView.layer.borderWidth            = 0.5f;textView.layer.borderColor            = [[UIColor grayColor] colorWithAlphaComponent:0.15f].CGColor;textView.editable                     = NO;textView.selectable                   = NO;textView.layer.masksToBounds          = NO;textView.showsVerticalScrollIndicator = NO;textView.layer.masksToBounds          = YES;[self.contentView addSubview:textView];CGRect imagesFrame           = CGRectMake(60, 38, textView.width - 60 * 2, 170);textContainer.exclusionPaths = @[[self bezierPathWithFrame:imagesFrame]];[GCDQueue executeInMainQueue:^{self.JSViewDataSource  = @[[UIImage imageNamed:@"pic_1"],[UIImage imageNamed:@"pic_2"],[UIImage imageNamed:@"pic_3"],[UIImage imageNamed:@"pic_4"]];self.JSView                     = [[JSAnimatedImagesView alloc] initWithFrame:imagesFrame];self.JSView.alpha               = 0.f;self.JSView.transitionDuration  = 2.f;self.JSView.dataSource          = self;self.JSView.layer.masksToBounds = YES;[textView addSubview:self.JSView];[UIView animateWithDuration:2.f animations:^{self.JSView.alpha = 1.f;}];} afterDelaySecs:0.5f];
}- (UIBezierPath *)bezierPathWithFrame:(CGRect)frame {return [UIBezierPath bezierPathWithRect:frame];
}- (NSUInteger)animatedImagesNumberOfImages:(JSAnimatedImagesView *)animatedImagesView {return self.JSViewDataSource.count;
}- (UIImage *)animatedImagesView:(JSAnimatedImagesView *)animatedImagesView imageAtIndex:(NSUInteger)index {return self.JSViewDataSource[index];
}@end

转载于:https://www.cnblogs.com/YouXianMing/p/5375649.html

TextKit简单示例相关推荐

  1. python文本处理实例_Python 文件处理的简单示例

    这篇文章主要为大家详细介绍了Python 文件处理的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 相关的AP ...

  2. python获取mac、计算机id_python 获取本机IP、mac地址、计算机名的简单示例

    这篇文章主要为大家详细介绍了python 获取本机IP.mac地址.计算机名的简单示例,具有一定的参考价值,可以用来参考一下. 对python获取本机IP.mac地址.计算机名感兴趣的小伙伴,下面一起 ...

  3. python简单单元测试示范卷_Python 单元测试的简单示例

    这篇文章主要为大家详细介绍了Python 单元测试的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 以前我是不 ...

  4. python二分法求解_Python使用二分法求平方根的简单示例

    这篇文章主要为大家详细介绍了Python使用二分法求平方根的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 使 ...

  5. Unity 简单示例代码和向导/Unity Aplication Block

    Unity 简单示例代码和向导 关于Unity 的说明和下载地址,请访问[微软控制反转和依赖注入容器Unity 1.0发布] http://forum.entlib.com/Default.aspx? ...

  6. php定时刷新token,PHP 定时任务获取微信access_token的简单示例

    搜索热词 感兴趣PHP 定时任务获取微信access_token的简单示例的小伙伴,下面一起跟随编程之家 jb51.cc的小编来看看吧. 最近开发微信公众平台,公众号调用各接口时都需使用access_ ...

  7. python 搭建的http 动态服务器_Python 创建HTTP服务器的简单示例

    这篇文章主要为大家详细介绍了Python 创建HTTP服务器的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! ...

  8. python简单装饰器_python装饰器的简单示例

    这篇文章主要为大家详细介绍了python装饰器的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 装饰器的语法以 ...

  9. javascript worker 多线程 简单示例

    javascript worker 多线程 简单示例 项目结构 主线程 index.html <!DOCTYPE html> <html lang="en"> ...

最新文章

  1. 魔改宜家灯泡当主机,玩转《毁灭战士》无压力!网友:远超我家第一台电脑...
  2. linux more 下一页_Linux学习笔记
  3. 国产嵌入式操作系统发展思考
  4. 阿里云视频点播解决方案使用教程
  5. Caused by: org.apache.catalina.LifecycleException: A child container failed during start
  6. android下载图片服务,Android中的背景图片下载需要帮助吗?
  7. collection集合 地址_有容乃大--Java 集合(List/Set/Map)
  8. MyBlog前端开发2
  9. JavaScript中的流程控制语句
  10. HM个性化Recommendations--kaggle推荐比赛
  11. mysql cpu 100%_mysql占用资源CPU超过100%解决方法
  12. 4G模块配置、概念、调试记录
  13. LINQ:使用join进行联接
  14. 语言中的历史——汉语和突厥语的纠缠
  15. “谷歌百度一键搜索” -- 最方便的Chrome搜索插件
  16. 一个html5表格代码
  17. WebMatrix开发ASP.NET简易教程
  18. 国网配电站房智能辅控系统改造无人值守
  19. 数据库关系模型的三类完整性约束
  20. [思维导图学习四] 思维导图的优势与作用

热门文章

  1. mysql 使用正则表达式查询
  2. Linux上安装JDK+Tomcat
  3. 14 Java NIO vs IO-翻译
  4. Ext1.X的CheckboxSelectionModel默认全选之后不允许编辑的BUG解决方案
  5. java日志框架log4j详细配置及与slf4j联合使用教程
  6. C# Winform下载文件并显示进度条
  7. 英山往事之为母亲办六十大寿
  8. 档案和社会保险究竟有什么关系?【转】
  9. [JavaScript] FireBug 调试
  10. android sharedpreferences工具类