TextKit简单示例
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 - , MAXFLOAT);
textContainer.size = size;
[layoutManager addTextContainer:textContainer]; UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(, , Width - , self.contentView.height - )
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(, , textView.width - * , );
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 = .f;
self.JSView.transitionDuration = .f;
self.JSView.dataSource = self;
self.JSView.layer.masksToBounds = YES;
[textView addSubview:self.JSView]; [UIView animateWithDuration:.f animations:^{ self.JSView.alpha = .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
TextKit简单示例的更多相关文章
- Linux下的C Socket编程 -- server端的简单示例
Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...
- C# 构建XML(简单示例)
C# 构建XML的简单示例: var pars = new Dictionary<string, string> { {"url","https://www. ...
- 根据juery CSS点击一个标签弹出一个遮罩层的简单示例
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- ACEXML解析XML文件——简单示例程序
掌握了ACMXML库解析XML文件的方法后,下面来实现一个比较完整的程序. 定义基本结构 xml文件格式如下 <?xml version="1.0"?> <roo ...
- demo工程的清单文件及activity中api代码简单示例
第一步注册一个账户,并创建一个应用.获取app ID与 app Key. 第二步下载sdk 第三步新建工程,修改清单文件,导入相关的sdk文件及调用相应的api搞定. 3.1 修改清单文件,主要是加入 ...
- spring-servlet.xml简单示例
spring-servlet.xml简单示例 某个项目中的spring-servlet.xml 记下来以后研究用 <!-- springMVC简单配置 --> <?xml versi ...
- SignalR 简单示例
一.什么是 SignalR ASP.NET SignalR is a library for ASP.NET developers that simplifies the process of add ...
- Web API 简单示例
一.RESTful和Web API Representational State Transfer (REST) is a software architecture style consisting ...
- XML引入多scheme文件约束简单示例
XML引入多scheme文件约束简单示例,用company.xsd和department.xsd来约束company.xml: company.xsd <?xml version="1 ...
随机推荐
- liunx 安装和解压命令
tar.gz格式 sudo tar -xvf file.tar.gz -C /目录/ //注意C为大写,-C /目录是可选的 zip sudo jar xvf file.zip //jar ...
- laravel项目利用twemproxy部署redis集群的完整步骤
Twemproxy是一个代理服务器,可以通过它减少Memcached或Redis服务器所打开的连接数.下面这篇文章主要给大家介绍了关于laravel项目利用twemproxy部署redis集群的相关资 ...
- python爬虫-基础
所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地. 类似于使用程序模拟IE浏览器的功能,把URL作为HTTP请求的内容发送到服务器端, 然后读取服务器端的响应资源. 1.浏 ...
- .NetCore下 Exceptionless 分布式日志的个性化处理
Event Type 在Exceptionless中有 Exception .LogMessage.Broken Links .Feature Usages 接下来就这几种类型分别添加日志记录 Exc ...
- 如何区分prometheus中Histogram和Summary类型的metrics?
要理解它们的区别,关键还是告业务应用. 但如何在学习时,如何区分呢? 有以下几个维度: histogram有bucket,summary在quatile. summary分位数是客户端计算上报,his ...
- ubuntu ifconfig只有lo没有ens33的问题
如果ifconfig只显示了lo, ifconfig -a 却正常显示ens33.那么可以按照如下的操作: service network-manager stop rm /var/lib/Netwo ...
- SOAP port
To determine the SOAP port on WebSphere Base: Server Types > WebSphere application servers > [ ...
- node-webkit开发桌面应用
Node-Webkit能够做什么呢?(打开链接看discuss) github 项目源:https://github.com/rogerwang 导言 node-webkit 是一个很神奇的桌面客户端 ...
- Linux shell 脚本小记2
.从文件读取 while read line do echo "line=$line" done < file.txt .将字符串转换为数组,并进行遍历 str=" ...
- UVALive 6889 City Park 并查集
City Park 题目连接: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=122283#problem/F Description P ...