自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 CSSwiftExtension - 贡献一个非常好用的Swift extension集合

CSSwiftExtension是我个人开源的一个非常有用的Swift extension集合。支持CocoadPods和Carthage。 目前主要包含Foundation和UIKit的两类extension.

2017-02-01 12:31:20 853 0

原创 iOS --- 一张图看懂转场动画

转场动画在iOS开发中非常常见, 其原理大概如下图: 一切都是从图中的 * Transition Animation * 开始.本文主要基于以上这张图, 讲解了transitionFromViewController, CATransition, TransitionAnimation三种转场实...

2016-08-16 23:30:57 2602 0

原创 iOS --- 如何暂停和继续CALayer上的动画

本文主要介绍了如何暂停和继续CALayer的动画. 首先来看CALayer./** The base layer class. **/@interface CALayer : NSObject <NSCoding, CAMediaTiming>NSCoding比较常用, 就不多说了. ...

2016-08-16 23:28:27 4676 0

原创 iOS --- 线程安全之semaphore

dispatch_semaphore是GCD中常见的同步方式, 相关方法有三个: dispatch_semaphore_create, dispatch_semaphore_wait, dispatch_semaphore_signal.

2016-07-31 14:47:29 725 0

转载 [转] --- Core Data 线程大揭秘

原文地址: Core Data 线程大揭秘, 作者是Marcus Zarra. Marcus Zarra Marcus Zarra 最为出名的就是他精通 Core Data、持久化存储以及网络等相关知识。他从 2004 年开始开发 Cocoa 应用,绝大多数时间他都用在开发软件上面。

2016-07-31 10:40:06 726 0

原创 iOS --- 自定义navigationBar的两种常见方式

我们经常会有自定义navigationBar的需求, 通常有两种实现方式.

2016-07-27 22:27:17 1561 0

原创 iOS --- 使用runtime将JSON转换成Model

这里简单介绍如何使用runtime将JSON转换成Model.

2016-07-26 22:33:20 1835 0

原创 iOS --- 关于KVC使用的一些小技巧

KVC是iOS开发中经常会用到的技巧, 主要包括valueForKey:/setValue:ForKey:, valueForKeyPath:/setValue:forKeyPath:两队组合方法. valueForKey:会首先查找以参数名命名的getter方法, 如果没有找到, 则在对象内寻...

2016-07-26 22:21:07 967 0

原创 iOS --- 为UIButton添加setBackgroundColor:forState:方法(包含OC和Swift两个版本)

有这样的一类简单需求: UIButton的背景色要与其state相关, 如未点击时显示蓝色, 点击时显示绿色. 但是, UIButton自身并未提供setBackgroundColor:forState:方法, 因此我们不得不单独在touchDown等方法中去更新其backgroundColor...

2016-07-07 21:50:41 1498 0

原创 iOS --- 如何在Swift项目中使用runtime?

在Objective-C的项目中, 经常遇到通过runtime来获取类和对象的成员变量, 属性, 方法, 在此基础上可以实现method swizzling. Swift代码中已经没有了Objective-C的运行时消息机制, 在代码编译时即确定了其实际调用的方法. 所以纯粹的Swift类和对象没...

2016-07-03 22:46:11 5624 0

原创 iOS---防止UIButton重复点击的三种实现方式

通常, 我们会采用如下的一些措施来防止重复点击UIButton:使用UIButton的enabled或userInteractionEnabled使用UIButton的enabled属性, 在点击后, 禁止UIButton的交互, 直到完成指定任务之后再将其enable即可.

2016-06-29 14:39:59 13025 1

原创 iOS---如何在CocoaPods上发布自己的项目

目前, 在iOS开发中, CocoaPods应该算是使用最为频繁的包管理工具了.

2016-06-29 00:05:37 1543 1

原创 iOS---使用CAEmitterLayer制作发射粒子的特效

CAEmitterLayer是QuartzCore提供的粒子引擎, 可用于制作美观的粒子特效. 如下图是一个粒子特效的截图, 实际的动态效果会更好, 因为gif制作比较模糊就没有贴出来.CAEmitterLayerCAEmitterLayer与CAEAGLLayer类似, 如果放在UIView中...

2016-06-18 09:40:48 2280 0

原创 iOS---Objective-C中@class与#import的区别

在Objective-C的项目中, @class通常放在.h文件中, 主要作用在于提升编译性能, 且能防止头文件的递归import.编译性能的考虑通常, 使用#import引入一个类的头文件, 编译时会将该类的头文件中的所有信息都引入, 包含属性和方法, 但有时候却不需要这么多, 且包含这些信息会...

2016-06-15 00:04:36 1487 0

原创 从iOS端Facebook分享的预览效果到Open Graph Protocol(开放内容协议)

主要记录了在iOS端进行Facebook分享时遇到的一个问题, 涉及到Open Graph Protocol(开放内容协议).

2016-06-12 22:41:37 2259 0

转载 [转]---使用 Realm 和 Swift 创建 ToDo 应用

本文转载自SwiftGG, 原文地址: [使用 Realm 和 Swift 创建 ToDo 应用](http://swift.gg/2015/12/08/building-a-todo-app-using-realm-and-swift/). 同时加上了个别的补充.

2016-06-10 20:31:13 954 0

转载 [转] --- 转载一份开源的高斯模糊算法

高斯模糊是非常常见的图像算法之一. 转载来源: StackBlurDemo 感谢作者.

2016-05-03 23:10:57 661 0

原创 iOS --- 理解Runtime机制及其使用场景

Runtime是iOS中比较难以理解, 但又非常强大的技术. 所谓运行时, 就是尽可能地把决定从编译器推迟到运行期, 就是尽可能地做到动态. 只是在运行的时候才会去确定对象的类型和方法的. 因此利用Runtime机制可以在程序运行时动态地修改类和对象中的所有属性和方法. Objective-C中调...

2016-04-17 22:25:33 10326 2

原创 iOS --- 获取屏幕顶层的UIViewController

经常会遇到一些场景, 要通过代码获取到当前显示在屏幕最顶层的UIViewController. 如何获取呢?

2016-04-04 21:14:50 4256 0

原创 iOS --- 理解UIWindow及其常见使用场景

UIWindow继承自UIView, 用来管理和协调各种视图. 提供一个区域来显示视图, 将事件event分发给视图. 每个iOS应用必须包含一个window用于展示APP的交互页面. 且一个APP通常只有一个UIWindow, 包含了APP的可视内容. 即使有多个, 也只有一个UIWindo...

2016-04-04 20:48:01 1196 0

原创 iOS --- 通过openURL实现APP之间跳转并传递数据

在博客iOS — 通过UIApplication的openURL来实现APP之间的相互跳转中, 介绍了如何实现iOS APP之间的相互跳转, 使用的就是UIApplication的openURL:方法. 那么, 如果想要在openURL方法中传递参数和数据, 应该如何实现呢?

2016-04-04 15:52:50 5522 0

原创 iOS --- OpenGLES之图片纹理

在之前的一系列博客中, 介绍了OpenGLES相关的着色器Shader, 顶点及图形绘制: [iOS — OpenGLES之简单的图形绘制()]http://icetime17.github.io/2016/01/03/2016-01/iOS-OpenGLES之简单的图形绘制/) 那么, 接下...

2016-03-27 20:39:23 4550 2

原创 iOS --- 使用runtime解决3D Touch导致UIImagePicker崩溃的问题

UIImagePickerController是iOS中自带的系统相册选择器, 使用起来非常简便. 3D Touch是iPhone 6s/6splus设备才有的特点, 在系统相册中长按一个照片, 可触发3D Touch相关的操作. 而在没有3D Touch的设备中, 在系统相册中长按一个照片, 会...

2016-03-20 09:06:19 1715 0

原创 iOS --- 两个NSIndexPath对象的正确比较方式

在UITableView和UICollectionView中, 经常会遇到比较两个NSIndexPath对象是否相同的情况. 只能分别对NSIndexPath对象的section与row或item进行判断

2016-03-03 07:38:12 5997 0

原创 iOS --- 为UISlider添加点击事件

UISlider是iOS中非常常见的UI控件, 继承自UIControl, 可设置valueChanged等事件响应方法. 但其默认不支持单击事件, 本文即简单地实现了可单击选值的UISlider.

2016-02-23 07:35:48 8326 1

原创 iOS --- 如何隐藏APP的statusBar

如何隐藏APP的statusBar

2016-02-14 09:22:54 834 0

原创 iOS --- 根据字符串的实际大小来计算UILabel的size

很多UILabel的使用场景下,需要根据字符串的实际大小来计算UILabel的size,以保证UILabel的美观:使用NSString的方法:(CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakM...

2016-02-13 21:58:42 4643 0

原创 iOS --- Objective-C 的switch语句中不能初始化对象

在Objective-C代码中,switch语句中不能进行对象的初始化操作。

2016-02-13 16:35:32 1524 1

原创 iOS --- 本地推送通知 UILocalNotification

本地推送UILocalNotification常用于定期提醒用户使用该APP,如AirBrush的定期提醒用户拍照,运动锻炼工具的每天锻炼提醒。不同于远程推送RemoteNotification,本地推送一般较固定,通常事先设置好推送周期。而推送内容往往也是固定的,可存放于plist文件中。本地推...

2016-02-11 11:25:08 1820 0

原创 C++ --- 常见容器之vector

vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。

2016-01-30 14:10:56 444 0

翻译 [译] --- OpenGL ES 2.0 for iPhone Tutorial Part 2: Textures

本文译自:OpenGL ES 2.0 for iPhone Tutorial Part 2: Textures。其中主要介绍了OpenGLES纹理相关的内容。

2016-01-11 21:16:46 985 0

原创 iOS --- OpenGLES之顶点缓存对象VBO

在上一篇博客 iOS — OpenGLES之简单的图形绘制 中,使用OpenGLES绘制了基本的三角形和矩形。在矩形绘制过程中,使用到了VBO,即Vertex Buffer Object,可视为GPU中的一块缓冲区buffer,用于存储顶点的所有信息。OpenGL在GPU中记录着这个VBO的id和...

2016-01-10 09:52:48 1951 0

原创 iOS --- OpenGLES之简单的图形绘制

在上一篇博客 iOS — OpenGLES之着色器(shader)的编译、链接及使用 中,简要介绍着色器(shader)的编译、链接及使用。本文将在之前一系列OpenGLES相关博客的基础上,使用OpenGLES绘制基本的图形。

2016-01-03 19:22:35 3080 0

原创 iOS --- OpenGLES之着色器(shader)的编译、链接及使用

在上一篇博客 iOS — OpenGLES之着色器(shader)语法介绍 中,简要介绍了OpenGLES的着色器shader的基本语法,以及Vertex Shader和Fragment Shader的差异。本文中,将简要介绍着色器(shader)的编译、链接及使用。

2016-01-03 18:38:15 2833 0

原创 iOS --- OpenGLES之着色器(shader)语法介绍

上一篇博客 [iOS --- OpenGLES之初步认识](http://blog.csdn.net/icetime17/article/details/50429658) 中主要介绍了OpenGLES在iOS中的简单使用,包括创建EAGLContext,设置CAEAGLLayer属性,使用ren...

2015-12-31 08:07:00 5522 0

原创 iOS --- 获取UIView的模糊效果截图

我们常见到一些APP中对指定UIView区域进行模糊处理的效果。实现此效果,需要用到UIView截图和UIImage的ImageEffects扩展。

2015-12-30 19:34:00 1544 0

原创 iOS --- OpenGLES之初步认识

iOS上绘制图形的方式很多,UIKit,CoreGraphics,SpriteKit,OpenGL ES,Metal等。OpenGL ES是一套非常底层但使用非常广泛的C语言API,专为移动设备定制,可在不同的手机系统或浏览器上使用,渲染效果非常好。

2015-12-30 07:29:30 3689 0

原创 iOS --- CoreGraphics中三种绘图context切换方式的区别

CoreGraphics的使用过程中,经常会遇到绘图context切换的操作,一般使用用到CGContextSaveGState/CGContextRestoreGState,UIGraphicsPushContext/UIGraphicsPopContext,UIGraphicsBeginIma...

2015-12-29 21:45:10 3674 0

原创 iOS --- 多线程之NSOperation

NSOperation基于GCD封装实现的,比GCD稍慢,可设定各个操作之间的依赖关系及优先级等。相对于GCD而言,NSOperation主要会涉及到使用NSOperationQueue来调度和管理各个NSOperation对象及操作。

2015-12-27 19:23:59 547 1

原创 iOS --- 多线程之GCD

GCD(Grand Central Dispatch)是一套低层级的C语言API,通过GCD,可向队列中添加一段代码段(block或C函数指针),而不需要直接和线程打交道。GCD在后端管理着一个线程池,不仅决定着代码块在哪个线程中执行,还可根据可用的系统资源对线程进行管理,从而解决了线程创建管理等...

2015-12-27 18:27:44 504 0

提示
确定要删除当前文章?
取消 删除