属性与变量

property和ivar 属性的内存结构与@synthesize 应用 runtime简称运行时,就是在程序运行时的一些机制,在iOS开发中runtime的特性使得oc这门语言具有独特的魅力。 对于C、C++来说,在程序编译运行时,类对象能调用哪些方法,能进行什么操作,都被决定好了。而runtime机制让oc能在运行时动态的创建类、黑盒测试、扩展属性等等,极大的提高了语言的灵活性。今天结合runtime的一些机制来谈谈oc的属性和变量。(这是我关于runtime机制的开篇,若文中提及的某些知识点有什么不同的意见,欢迎在评论中与我一同探讨) property和ivar 首先要确定的是,属性(property)和成员变量(ivar)它们是不同的东西,在oc中它们的区...
Click to read more ...

事件传递响应链

响应者 响应链传递 响应链应用 当我们在使用微信等工具,点击扫一扫,就能打开二维码扫描视图。在我们点击屏幕的时候,iphone OS获取到了用户进行了单击这一行为,操作系统把包含这些点击事件的信息包装成UITouch和UIEvent形式的实例,然后找到当前运行的程序,逐级寻找能够响应这个事件的对象,直到没有响应者响应。这一寻找的过程,被称作事件的响应链,如下图所示,不用的响应者以链式的方式寻找 响应者 在iOS中,能够响应事件的对象都是UIResponder的子类对象。UIResponder提供了四个用户点击的回调方法,分别对应用户点击开始、移动、点击结束以及取消点击,其中只有在程序强制退出或者来电时,取消点击事件才会调用。 在自定义UIView为基类的控...
Click to read more ...

KVO的奥秘

使用 苹果的黑魔法 怎么实现类似效果 尾言 在iOS开发中,苹果提供了许多机制给我们进行回调。KVO(key-value-observing)是一种十分有趣的回调机制,在某个对象注册监听者后,在被监听的对象发生改变时,对象会发送一个通知给监听者,以便监听者执行回调操作。最常见的KVO运用是监听scrollView的contentOffset属性,来完成用户滚动时动态改变某些控件的属性实现效果,包括渐变导航栏、下拉刷新控件等效果。 使用 KVO的使用非常简单,拿上面的渐变导航栏做,我们为tableView添加了一个监听者controller,在我们滑动列表的时候,会计算当前列表的滚动偏移量,然后改变导航栏的背景色透明度。 //添加监听者 [self.tab...
Click to read more ...

侧滑界面的小实验

解决思路 在keyWindow上实现 在tabBarController上实现 解决方法 其他 简单说,这段时间开发的时候有个业务需要用侧滑菜单来实现。博主当时的第一反应是上网找轮子直接使用,然而,事情总是出乎意料的。使用网上的开源轮子之后,我在点击tabBarController的切换控制器时,却意外的crash了。 什么鬼!待博主看完源码,发现找到的轮子几乎都是将我们当前要显示的主界面view以及侧边栏的view加到轮子的view上,然后设置轮子为rootViewController进行管理。因此,当博主将tabBarController作为侧滑功能的mainController的时候,虽然自己...
Click to read more ...

CALayer的探究应用

进度条 常规做法 自定义layer 扩展 先上本文讲述的demo效果图 这几天博主在看kitten yang的A GUIDE TO IOS ANIMATION,作者对动画的使用令我感触很深(同为同龄人实在感到惭愧),于是决定重新学习一次layer。 coreAnimation作为iOS最重要的框架之一,CALayer的重要性毋庸置疑,本文将从上图的demo讲起,我会分成常规用法跟自己思考实现的用法来实现,以此来更加深入的学习layer。 ps:本文不包括CALayer的属性讲解以及使用。如有需要,请自行百度学习 进度条 常规做法 如上图所示,进度条并不是单纯的线性增长,在50%之前,每一次进度增加,进...
Click to read more ...

创建个人博客详细过程

准备工作 创建github博客 域名绑定 更新博客 其他资源: 最近自己瞎搞了一个个人博客,个人觉得还不错,决定把制作博客的过程写下来,帮助想要构建自己博客的朋友们。 准备工作 首先,我们需要在github上面创建一个账号。如果你还没有github账号,那么可以在首页进行快速注册 填写完成确定信息没有重复的情况下,点击下面的Sign up for Github按钮,然后跳转到新界面。新界面用来选择是否进行付费购买github的仓库加密服务,如果你希望托管在github上面的项目不是开源的,那么选择付费很有必要。 这里默认选择了free免费,我们滑动到网页下面选择绿色按钮就可以注册成功了。注册完成后进行界面内,我们可以通过右下角的New按钮进行邮箱认证...
Click to read more ...

探索scrollView的实现

图层渲染 contentOffset contentSize contentInset UIScrollView滚动视图,绝对算的上是iOS开发中最重要的控件,用来展示多于一个屏幕的内容,可以滚动显示超过屏幕外的内容的特性使其产生了更多强大的子类:UITableView、UICollectionView、UITextView等等。尽管功能如此强大,但是scrollView本质上只是一个UIView的黑魔法,本文将剖析UIScrollView这种强大特性的实现过程 图层渲染 这里不得不提到UIView和CALayer的关系。在UIKit框架中,UIView是所有界面元素的基础,我们页面上可见的控件几乎都是从这个类派生出来的。之所以说几乎意味着我们也可以不通过UI...
Click to read more ...