Gocy's home page

把热爱的事情做好

0%

前言

这两天在实现我的动画库Demo的过程中,遇到一个令我有些疑惑的问题:在parentView上添加了UITapGestureRecognizer之后,subview中的UITableView实例无法正常响应点击事件了,但UIButton实例仍可以正常工作,经过一系列查阅资料和实验,终于理解了这是怎么一回事。

阅读全文 »

说在前头

对于许多使用过CAAnimation的开发者来说,“隐式动画”的概念应该并不陌生,简单地说,我们直接在代码中设置如下属性:

1
2
3
4
5
layer.backgroundColor = newColor.cgColor
layer.hidden = !layer.hidden
layer.bounds = newRect

...

系统将会默认创建一段动画,来animate对应属性的变化。

若想禁用或自定义这段动画的参数,可以调用CATransaction类方法来实现自定义,当然,如果想要更完整的控制权,也可以创建一个CAAnimation的实例。

阅读全文 »

上一篇文章中,我们跟着源码,走了一遍ASDK异步绘制的流程,本篇将初步介绍/使用ASDK的布局系统,来探索并学习一下这个由Flexbox衍生而来的布局系统。

如果你从未了解过ASDK的布局系统,那么阅读官方文档或者是通过这个小游戏来入门,会是一个不错的选择。

阅读全文 »

接触iOS以来,就一直对性能方面的知识颇感兴趣,但一直没(lan)时(de)间(kan)相关的知识,直到最近阅读了RunLoop相关的代码,也有了解到ASDK的异步绘制最终也是以主线程RunLoop为切入点,将绘制结果最终展示到屏幕上,所以跟着几篇文章,走了走ASDK的源码,希望能搞清楚这个库是如何高效的提升性能的。

阅读全文 »

最近开发中遇到了一些问题,再次又看起了RunLoop的相关知识,发现“纸上得来终觉浅”,还是得看看源码。首先整理一些比较好的RunLoop概念介绍和入门的文章:

sunnyxx线下Runloop分享会

《深入理解RunLoop》 Garan no Dou

基本概念

一个视频一篇文章,基本就能对RunLoop的运作机制有个大致了解了,总的来说:

1.RunLoop通常和线程是一对一的关系(一个线程中只能有一个RunLoop,但这个RunLoop中允许有子RunLoop的存在),这点很好理解,因为从源码上来看,RunLoop就是一个do-while的阻塞线程的循环,因此不可能在同一线程中同时有两个RunLoop。

2.iOS中,许多事件管理、分发都与跑在主线程的RunLoop有关(NSTimer的实现,UI绘制的调用,用户交互事件的响应等等),RunLoop把这些事件分为:Timer事件、Source事件(包含source0、source1,source0可以理解为用户级事件,如触摸事件,是不能唤醒RunLoop的,source1是系统级的事件,RunLoop在休眠时监听特定的port,当这些port有消息传来时,RunLoop就会被唤醒。)

阅读全文 »

借着实习和正式入职之间的间隙,报了个途牛团(我这真不是打广告)去云南玩了一圈,记录一下所见所闻所感。

准备阶段

这里还是不得不小喷一下途牛,由于是散团拼团,所以出团通知在出行前1~2天才发出,由于下订单的时候只留了个手机号,没有留邮箱,所以迟迟没有接到出团通知,打电话咨询了才把机票信息、接机联系人信息发过来(明明可以发短信又留了手机号,结果说没留邮箱所以没发出团信息)。

云南偏北、行程中包含香格里拉、玉龙雪山等高海拔地区,所以大夏天的我一个广东人硬是带上了毛衣秋裤。

阅读全文 »

终于开始写博客了

大二在指导老师的强烈建议下,开始在CSDN记录一些学习心得等等,然而觉得CSDN实在是太丑了,加上写一篇博客耗时很久,所以没能坚持下来。

现在临近毕业,又觉得确实记录一些技术/生活上的东西非常有必要,终于在**楷哥**的帮助下有了一个勉强能看的博客

好了,Blog’s ready