纳兰若水


  • 首页

  • 归档

  • 分类

  • 标签

TextView 选中高亮动效---iOS

发表于 2017-12-10 | 分类于 iOS
字数统计: 749 | 阅读时长 ≈ 3

最近有个需求,TextView显示从录音转出的文字,在播放时,播放一段文字时需要高亮选中动效(刷色+透明度变换)。
解决步骤:

1:覆盖一个一模一样的textView、相同的frame、font。
2:设置textView的selectedRange
3:拿到textView的selectedTextRange
4:根据selectedTextRange通过selectionRectsForRange方法拿到选中的UITextSelectionRect数组,UITextSelectionRect中包含选中的rect信息,选中的首尾位置。
5:分析UITextSelectionRect数组给textView的layer添加CABasicAnimation的相关path和opacity等动效

代码很简单:
新建一个同样的textView

1
2
3
4
5
6
7
8
9
10
11
12
13
//额外添加一个用来做高亮的textview
_maskTextview = [UITextView new];
_maskTextview.text = testString;
_maskTextview.textColor = [UIColor redColor];//你要高亮的颜色
_maskTextview.font = [UIFont systemFontOfSize:20];
_maskTextview.frame = textView.frame;

[self.view addSubview:_maskTextview];

_layer = [CAShapeLayer layer];
_layer.frame = _maskTextview.bounds;
_layer.fillColor = [UIColor blackColor].CGColor;//本来textview的颜色
[_maskTextview.layer setMask:_layer];

阅读全文 »

2017国庆稻城亚丁之旅

发表于 2017-10-18 | 分类于 游记
字数统计: 1.7k | 阅读时长 ≈ 5

行程日期:2017/09/29 - 2017/10/08
行程路线:成都->海螺沟->雅江->稻城亚丁->康定县->丹巴县->成都
行程亮点:美景 美食

美好的路途开始啦,逛吃逛吃逛吃,hot hot hot!!!— 成都我来了

来成都当然是串串配火锅啦,好吃不贵,满足!作为喜欢吃辣的妹纸这两天可以说是相当开心了O(∩_∩)O~
在成都呆了两天,白天逛了锦里和宽窄巷子,晚上在蜀风雅韵看了川剧变脸、戏曲表演,好惬意~~
锦里、宽窄巷子、川剧、串串

成都带不走的只有你!
和我在成都的街头走一走 呜喔呜喔~~
直到所有的灯都熄灭了也不停留
你会挽着我的衣袖 ~
我会把手揣进裤兜 ~
走到玉林路的尽头 ~
走过小酒馆的门口 ~

阅读全文 »

自定义 UICollectionViewLayout实现横向布局分页Emoji

发表于 2017-09-19 | 分类于 iOS
字数统计: 806 | 阅读时长 ≈ 4

需求:emoji的横向显示,在每页的最后需要显示一个删除按钮,如下图所示。

  • 可以先阅读下苹果的文档
    必须需要覆盖的方法
    collectionViewContentSize layoutAttributesForElements(in:) layoutAttributesForItem(at:) layoutAttributesForSupplementaryView(ofKind:at:) (如果您的布局支持补充视图)
    layoutAttributesForDecorationView(ofKind:at:) (如果您的布局支持装饰视图)

    当然还有当数据更改移动删除时需要覆盖的方法,目前没有此需求,先不谈,具体可以看文档O(∩_∩)O~~

prepareLayout

在collectionview显示或更新时总会先调用此方法,该方法的默认实现什么都不做。子类可以覆盖它,并使用它来设置数据结构或执行以后执行布局所需的任何初始计算。

阅读全文 »

意法瑞游记

发表于 2017-08-27 | 分类于 游记
字数统计: 1.8k | 阅读时长 ≈ 6

行程日期:2017/6/29 - 2017/7/10

出发

目的地是罗马,上午11点40从上海出发,在阿姆斯特丹转机,历时16小时,到达罗马的酒店当地时间凌晨一点。

6-29 梵蒂冈->罗马斗兽场

圣彼得堡大教堂,正逢佛朗西斯一世教皇在做礼拜O(∩_∩)O~


圣彼得堡大教堂

阅读全文 »

Xcode9 之 Xcode Server 持续集成

发表于 2017-08-16 | 分类于 工具
字数统计: 929 | 阅读时长 ≈ 3

前言:Xcode9之前使用Xcode Server 步骤比较繁琐,还需要单独的macOS Server app,Xcode9之后preferences新增了Server & Bots 选项, 将Xcode Server内置在了Xcode中。
下面将介绍在Xcode9中如何设置和使用Xcode Server。

开启Server & Bots

选择设置Xcode Server的用户,我选择的是自己,也可以选择其他用户。

阅读全文 »

Effective Objective 2.0 读书笔记 之 GCD

发表于 2017-02-24 | 分类于 读书笔记
字数统计: 1.6k | 阅读时长 ≈ 6

      Grand Central Dispatch (GCD) 是异步执行任务的技术之一。一般将应用程序中记述的线程管理用的代码在系统级中实现。开发者只需要定义想执行的任务并追加到适当的Disptach Queue中,GCD就能生成必要的线程并计划执行任务。由于线程管理是作为系统的一部分来实现的,因此可统一管理,也可执行任务,这样就比以前的线程更有效率。
      GCD用我们难以置信的非常简洁的记述方法,实现了极为复杂繁琐的多线程编程。下面列出几点关于GCD使用的高效方法。

一:使用Dispatch_once来执行只需运行一次的线程安全代码(单例)

      单例模式大家都不陌生,常见的实现方式为:在类中编写名为sharedInstance的类方法,该方法只会返回全类共用的单例实例,而不会每次调用时都创建新的实例。例如:

1
2
3
4
5
6
7
8
9
+(void)sharedInstance{
static DemoClass *sharedInstance = nil;
@synchronized(self){
if(!sharedInstance){
sharedInstance = [[self alloc]init];
}
}
return sharedInstance;
}

阅读全文 »

React-Native 之 Image加载本地图片的坑

发表于 2017-01-05 | 分类于 iOS
字数统计: 353 | 阅读时长 ≈ 1

在使用React-Native 的 Image加载本地图片碰到一个小坑,在这里记录下。

阅读全文 »

React-Native 之 ListView 的简单使用

发表于 2017-01-05 | 分类于 技术
字数统计: 689 | 阅读时长 ≈ 3

官方文档详细的介绍了ListView的使用方式。
在这里我简单的进行了实践,拉取网络数据进行显示,触底自动加载更多。代码非常简洁清晰,这里直接贴出来O(∩_∩)O~。

阅读全文 »

Effective Objective 2.0 读书笔记 之 动态方法解析实现@dynamic属性

发表于 2017-01-04 | 分类于 读书笔记
字数统计: 1.4k | 阅读时长 ≈ 5

我们要知道在Objective-C中,如果像某对象传递消息,那就会使用动态绑定机制来决定需要调用的方法。在底层,所有方法都是普通的C语言函数,然而对象收到消息之后,究竟该调用哪个方法则完全于运行期决定,甚至可以在程序运行时改变(最常见的运用场景就是Method Swizzle黑魔法),这些特性使得Objective-C成为一门真正的动态语言。
给对象发送消息:

1
id returnValue = objc_msgSend(someObject,@selector(messageName:),parameter);

objc_msgSend方法会在接收者所属的类中搜寻其”方法列表 list of methods (可通过class_copyMethodList(objClass,&count)方法获取对象所有方法列表) “,如果能找到与选择子(也就是messageName)名称相符的方法就跳转至其实现代码。若找不到则沿着继承体系向上查找,找到方法再跳转( note :找到后,objc_msgSend会将匹配的结果缓存在快速映射表(fast map)里面,每个类都有这样一块缓存,若是稍后还向该类发送与选择子相同的消息,那么执行就很快。当然还是稍微不如静态绑定的函数调用快,不过消息派发机制并不会成为应用程序的瓶颈啦!),
如果最终还是找不到相符的方法,那就执行消息转发(message forwarding)操作。消息转发分为两大阶段,动态方法解析阶段和完整的消息转发阶段。
本文将用例子来演示第一阶段的运用。

阅读全文 »

JSPatch - 随笔记录常见问题

发表于 2017-01-03 | 分类于 iOS
字数统计: 1k | 阅读时长 ≈ 4

接触JSPatch也快一年,在此总结归纳一些新接触的开发者容易碰到的一些问题。其实很多问题bang哥在wiki中已经写的很详细了,建议花点时间仔细看看下面这两个WiKi内容。

  • 基础用法
  • 常见问题

想要了解JSPatch实现原理可以先看 JSPatch 实现原理详解

require导入类

只需要一对' ', 多个类之间用逗号 ,分隔:

1
require('UIView, UIColor')

方法遇到下划线_需要特别注意

因为JSPatch是通过_来分割方法参数的,所以遇到方法本身带有_的时候需要使用__双下划线代替,否则会被识别成一个参数,导致出现类似如下的报错。

阅读全文 »
1…345
纳兰若水

纳兰若水

随便写写读书笔记、技术学习、随想、生活、游记

41 日志
8 分类
5 标签
RSS
GitHub Twitter
© 2017 — 2024 纳兰若水
沪ICP备2021021008号-1
| Site words total count: 0 字 Site words total count: 73.3k