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 ...
随机推荐
- Angular2 CLI安装
官方文档: https://angular.cn/docs/ts/latest/cli-quickstart.html 实现步骤: 1.设置开发环境 2.创建新项目以及应用的骨架 3.启动开启服务 4 ...
- (转)jquery serialize表单序列化,当radio或checkbox 未选中时,没有序列化到对象中的原因分析和解决方案 - ghostsf
相信很多人都用过jq的表单序列化serialize()方法,因为这能很方便地帮你把表单里所有的非禁用输入控件序列化为 key/value 对象,不需要你再去一个个地拼接参数了. 这是一个很好用的函数, ...
- C语言——第零次作业
A:你对网络专业或计算机专业了解是怎样? 据我所知计算机专业未来前景不错,不仅就业路子广,毕业工资高,而且在全世界都很吃香.但是,计算机专业是一个非常难学的专业,尽管人们追趋逐耆也没有填补计算机高端人 ...
- JavaScript——双向链表实现
本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文链接 http://www.cnblogs.com/tdws/ 下午分享了JavaScript实现单向链表,晚上就来补充下双向链表吧.对链表 ...
- VirtualBox 安装 Gentoo 小记
因为需求,尝试了一下在 VirtualBox 安装 Gentoo.虽然多年前就折腾过多次 LFS,但 Gentoo 并没有太多尝试.这次确实也经历了种种波折,到最后总算成功了,大致跨度为3天.本来手上 ...
- es6 Promise 事件机制分析
最近在学习es6的Promise,其中涉及到了Promsie的事件执行机制,因此总结了关于Promise的执行机制,若有错误,欢迎纠错和讨论. 在阮一峰老师的书中<es6 标准入门>对Pr ...
- Python3 贝叶斯分类
# -*- coding: utf-8 -*- """ Created on Tue Jan 16 20:11:07 2018 @author: markli " ...
- linux学习笔记-10.解压与压缩
1.gzip压缩 gzip a.txt 2.解压 gunzip a.txt.gzgzip -d a.txt.gz 3.bzip2压缩 bzip2 a 4.解压 bunzip2 a.bz2bzip2 - ...
- mysql where 条件中的字段有NULL值时的sql语句写法
比如你有一个sql语句联表出来之后是这样的 id name phone status 1 张三 ...
- 洛谷 P1135 奇怪的电梯
题目描述 呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯.大楼的每一层楼都可以停电梯,而且第i层楼(1<=i<=N)上有一个数字Ki(0<=Ki<=N).电梯只有四个按钮:开 ...