随笔分类 - iOS
摘要:GPUImageContext类,提供OpenGL ES基本上下文,GPUImage相关处理线程,GLProgram缓存、帧缓存。由于是上下文对象,因此该模块提供的更多是存取、设置相关的方法。 属性列表 初始化过程。在初始化的过程中通过dispatch_queue_set_specific设置队列标
阅读全文
摘要:简介 由于GPUImage添加滤镜可以形成一个FilterChain,因此,在渲染的过程中,可能会需要很多个FrameBuffer,但是正如上文所说,每生成一个FrameBuffer都需要占用一定的内存或者显存。因此,必须保证尽可能少创建FrameBuffer。而GPUImageFrameBuffe
阅读全文
摘要:简介 OpenGL ES的FrameBuffer是渲染发生的地方,普通的2D图形的渲染默认发生在屏幕上;而三维的图形渲染则除了包括像素点的颜色,还有Depth Buffer,Stencil Buffer等其他空间。因此,FrameBuffer就是一个这些Buffer的一个集合。 默认情况下,Fram
阅读全文
摘要:简述 GLProgram是GPUImage中代表openGL ES 中的program,具有glprogram功能。其实是作者对OpenGL ES program的面向对象封装 初始化 program shader c语言编译流程:预编译、编译、汇编、链接 glsl的编译过程类似c语言,主要有glC
阅读全文
摘要:一、什么是RunLoop? 从字面意思上来看,RunLoop就是运行循环,跑圈的意思。 我们都知道,一般来说一个线程执行一次任务之后便会退出,在iOS中,如果主线程只执行一次便退出的话也就意味着程序的停止。那么它是怎样做到让主线程保持不死,让程序一直运行的呢?答案就是RunLoop了。 打个比方:
阅读全文
摘要:作为iOS开发,UITableView可能是平时我们打交道最多的UI控件之一,其重要性不言而喻。关于TableView,我想最核心的就是UITableViewCell的重用机制了。简单来说呢就是当TableView滚动时,会调tableView:cellForRowAtIndexPath:这个方法,...
阅读全文
摘要:首先导入四个头文件#include #include #include #include 获取设备型号:+ (NSString *) platform{ size_t size; sysctlbyname("hw.machine", NULL, &size, NULL, 0); c...
阅读全文
摘要:ReactiveCocoa是一个框架,它能让你在iOS应用中使用函数响应式编程(FRP)技术。在本系列教程的第一部分中,你学到了如何将标准的动作与事件处理逻辑替换为发送事件流的信号。你还学到了如何转换、分割和聚合这些信号。在本系列教程的第二部分,你将会学到一些ReactiveCocoa的高级功能,包...
阅读全文
摘要:作为一个iOS开发者,你写的每一行代码几乎都是在响应某个事件,例如按钮的点击,收到网络消息,属性的变化(通过KVO)或者用户位置的变化(通过CoreLocation)。但是这些事件都用不同的方式来处理,比如action、delegate、KVO、callback等。ReactiveCocoa为事件定...
阅读全文
摘要:代码如下,可直接拷贝到头文件中#define singleton_h(name) +(instancetype)shared##name# if __has_feature(objc_arc) //ARC#define singleton_m(name) \static id _instance;\...
阅读全文
摘要:简单介绍下GCD:GCD:Grand Central Dispatch(伟大的中枢调度器),纯C的函数,提供了很多非常强大的功能。它是苹果公司为多核的并行运算提出的解决方案,具有以下优点1.GCD会自动利用更多的CPU内核(双核、四核等)2.自动管理线程的生命周期(创建任务、调度任务、销毁线程)3....
阅读全文
摘要:首先我们来看看iOS中事件的产生和传递过程:1.发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的队列事件中2.UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常会先发送事件给应用程序的主窗口(keyWindow)3.主窗口会在视图层次结...
阅读全文
摘要:NSOperation是基于GCD的一套多线程实现方案,和GCD一样,线程的生命周期是由系统来自动管理的,不用像NSThread和Pthread一样让程序员手动管理。相对于GCD来说,它更加地面向对象,并且比GCD多了一些更加简单实用的功能,另外,由于它的API是纯OC的,深受广大程序员喜爱,实用频...
阅读全文
摘要:一、基本知识介绍1.字符(Character)和字形(Glyphs)排版系统中文本显示的一个重要的过程就是字符到字形的转换,字符是信息本身的元素,而字形是字符的图形表征,字符还会有其它表征比如发音。 字符在计算机中其实就是一个编码,某个字符集中的编码,比如Unicode字符集,就囊括了大都数存在的字...
阅读全文
摘要:高效绘图软件绘图术语绘图通常在Core Animation的上下文中指代软件绘图(意即:不由GPU协助的绘图)。在iOS中,软件绘图通常是由Core Graphics框架完成来完成。但是,在一些必要的情况下,相比Core Animation和OpenGL,Core Graphics要慢了不少。软件绘...
阅读全文
摘要:基于定时器的动画定时帧动画看起来是用来显示一段连续的运动过程,但实际上当在固定位置上展示像素的时候并不能做到这一点。一般来说这种显示都无法做到连续的移动,能做的仅仅是足够快地展示一系列静态图片,只是看起来像是做了运动。我们之前提到过iOS按照每秒60次刷新屏幕,然后CAAnimation计算出需要展...
阅读全文
摘要:图层时间动画的发生是需要持续一段时间的,所以计时对整个概念来说至关重要。在这一章中,我们来看看CAMediaTiming,看看Core Animation是如何跟踪时间的。CAMediaTiming协议CAMediaTiming协议定义了在一段动画内用来控制逝去时间的属性的集合,CALayer和CA...
阅读全文
摘要:事务Core Animation基于一个假设,说屏幕上的任何东西都可以(或者可能)做动画。动画并不需要你在Core Animation中手动打开,相反需要明确地关闭,否则他会一直存在。当你改变CALayer的一个可做动画的属性,它并不能立刻在屏幕上体现出来。相反,它是从先前的值平滑过渡到新的值。这一...
阅读全文
摘要:CAShapeLayerCAShapeLayer是一个通过矢量图形而不是bitmap来绘制的图层子类。你指定诸如颜色和线宽等属性,用CGPath来定义想要绘制的图形,最后CAShapeLayer就自动渲染出来了。当然,你也可以用Core Graphics直接向原始的CALyer的内容中绘制一个路径,...
阅读全文
摘要:圆角圆角矩形是iOS的一个标志性审美特性。这在iOS的每一个地方都得到了体现,不论是主屏幕图标,还是警告弹框,甚至是文本框。按照这流行程度,你可能会认为一定有不借助Photoshop就能轻易创建圆角举行的方法。恭喜你,猜对了。CALayer有一个叫做conrnerRadius的属性控制着图层角的曲率...
阅读全文

浙公网安备 33010602011771号