IOS专栏
文章平均质量分 50
英雄有梦
人,一定要靠自己!
展开
-
iOS之触摸事件
iOS中的事件可以分为3大类型 触摸事件——————————加速计事件 ———————— 远程控制事件 在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件。我们称之为“响应者对象”UIApplication、UIViewController、UIView都继承自UIResponder,因此它们都是响应者对象,都能够接收并处理事件//UIResponder原创 2016-12-09 10:25:36 · 221 阅读 · 0 评论 -
iOS之CALayer与核心动画(四)
UI高级——核心动画原创 2016-12-28 15:23:41 · 268 阅读 · 0 评论 -
iOS之网络—— Runloop、Runloop应用、网络基础、NSURLConnection
补充1-1 关于GCD中的创建和释放在iOS6.0之前,在GCD中每当使用带creat单词的函数创建对象之后,都应该对其进行一次release操作。在iOS6.0之后,GCD被纳入到了ARC的内存管理机制中,在使用GCD的时候我们就像对待普通OC对象一样对待GCD,因此不再需要我们调用release方法。1-2 GCD中设置队列的优先级 01 使用create函数创建出来的队列不论是串行原创 2016-12-29 17:16:18 · 732 阅读 · 0 评论 -
iOS之Sizeclass简介
2> sizeclass * 仅仅是对屏幕进行了分类, 真正排布UI元素还得使用autolayout 了 * 不再有横竖屏的概念, 只有屏幕尺寸的概念 * 不再有具体尺寸的概念, 只有抽象尺寸的概念把宽度和高度各分为3种情况 1) Compact : 紧凑(小) 2) Any : 任意 3) Regular : 宽松(大)和UIButton类比4) 符号代表 - : Compac原创 2017-02-16 18:47:18 · 676 阅读 · 0 评论 -
iOS之AVPlayer、MPMoviePlayerController、MPMoviePlayerViewController、AVPlayerViewController播放音乐和视频
AVPlayer播放音乐#import <AVFoundation/AVFoundation.h>/** 播放器 */@property (nonatomic, strong) AVPlayer *player;#pragma mark - 懒加载代码- (AVPlayer *)player{ if (_player == nil) { // 1.创建音乐资源原创 2017-02-16 18:59:08 · 2234 阅读 · 0 评论 -
iOS之应用数据存储常用的五种方式(一)
1、XML属性列表(plist)归档 2、Preference(偏好设置:NSUserDefaults) 3、NSKeyedArchiver归档(NSCoding) 4、SQLite3 5、Core Data今天先讲解前三个,后两个后续更新。1.XML属性列表(plist)归档// 存储- (IBAction)save:(id)sender { // Plist存储 //原创 2016-12-05 16:33:36 · 476 阅读 · 0 评论 -
iOS之应用数据存储常用的五种方式(二)
应用数据存储常用的五种方式:原创 2017-02-17 12:03:38 · 367 阅读 · 0 评论 -
iOS之iOS9新特性——nonnull、nullable、null_resettable、_Null_unspecified
iOS9新出的关键字:用来修饰属性,或者方法的参数,方法的返回值好处:1.迎合swift2.提高我们开发人员开发规范,减少程序员之间交流注意:iOS9新出关键字nonnull,nullable,null_resettable,_Null_unspecified只能修饰对象,不能修饰基本数据类型. *nullable作用:表示可以为空 nullable书写规范: // 方式一: @pr原创 2017-01-21 15:50:16 · 1257 阅读 · 0 评论 -
iOS之iOS9新特性——泛型<ObjectType>
泛型:限制类型泛型使用场景:1.在集合(数组,字典,NSSet)中使用泛型比较常见.2.当声明一个类,类里面的某些属性的类型不确定,这时候我们才使用泛型.泛型书写规范在类型后面定义泛型,NSMutableArray<UITouch *> *datas泛型修饰:只能修饰方法的调用.泛型好处: 1.提高开发规范,减少程序员之间交流2.通过集合取出来对象,直接当做泛型对象使用,可以直接使用原创 2017-01-21 15:57:52 · 3260 阅读 · 0 评论 -
iOS之iOS9新特性——__kindof
__kindof:表示当前类或者它子类__kindof书写格式:放在类型前面,表示修饰这个类型(__kindof Person *)__kindof :在调用的时候,很清楚的知道返回类型id坏处: 1.不能在编译的时候检查真实类型 2.返回值,没有提示#import <Foundation/Foundation.h>@interface Person : NSObject//原创 2017-01-21 16:08:03 · 840 阅读 · 0 评论 -
iOS之CALayer与核心动画(三)
UI高级——CALayer原创 2016-12-28 15:12:49 · 259 阅读 · 0 评论 -
iOS之CALayer与核心动画(二)
01-转盘1.搭建界面 把转盘View给封装起来. 由于界面是固定不变的,可以弄一个Xib展示界面. 外界使用时直接来一个类方法直接调用.2.让转盘进行旋转. 在封装的View内部提供一个开始旋转的方法和结束旋转的方法,供外界直接调用. 在View内部实现方法. 开始旋转: 添加核心动画.动画要添加到里面的背景图片上.不能够直接添加到View原创 2016-12-27 17:32:21 · 354 阅读 · 0 评论 -
iOS之https请求客户端---AFNetworking
说点什么 自从出了iOS 9.0之后,Apple要求使用更安全的协议HTTPS,刚开始我们还可以通过在info.plist文件里添加键值对: App Transport Security Settings ( Dictionary ) Allow Arbitrary Loads – YES ( BOOL ) 来继续使用http请求,但是在2017年1月1日后,所有上架的APP必须使用HTTP转载 2016-12-09 10:39:14 · 1112 阅读 · 0 评论 -
iOS之UIGestureRecognizer手势识别
为了完成手势识别,必须借助于手势识别器—-UIGestureRecognizer利用UIGestureRecognizer,能轻松识别用户在某个view上面做的一些常见手势UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势 UITapGestureRecognizer(敲击) UIPinchGestureRecognizer(捏合,用于缩原创 2016-12-09 15:09:15 · 433 阅读 · 0 评论 -
iOS之网络—— JSON解析、XML解析、文件下载、文件的压缩和解压缩
1.0 JSON解析1.1 JSON简单介绍001 问:什么是JSON 答: (1)JSON是一种轻量级的数据格式,一般用于数据交互 (2)服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) 002 相关说明 (1)JSON的格式很像OC中的字典和数组 (2)标准JSON格式key必须是双引号 003 JSON解析方案原创 2017-01-03 10:35:30 · 1305 阅读 · 0 评论 -
iOS之网络—— NSURLConnection、Runloop、NSURLSession、NSURLSessionDownloadTask
1.NSURLConnection和Runloop(面试)1.1 涉及知识点(1)两种为NSURLConnection设置代理方式的区别 //第一种设置方式: //通过该方法设置代理,会自动的发送请求 // [[NSURLConnection alloc]initWithRequest:request delegate:self]; //第二种设置方式: //原创 2017-01-03 10:46:41 · 1035 阅读 · 0 评论 -
iOS之网络—— NSURLSessionDataTask文件离线断点下载、NSURLSession文件上传、AFN基本使用、Cocoapods安装
1.使用NSURLSessionDataTask实现大文件离线断点下载(完整)6.1 涉及知识点(1)关于NSOutputStream的使用 //1. 创建一个输入流,数据追加到文件的屁股上 //把数据写入到指定的文件地址,如果当前文件不存在,则会自动创建 NSOutputStream *stream = [[NSOutputStream alloc]initWithURL原创 2017-01-03 10:51:27 · 9082 阅读 · 0 评论 -
iOS之网络—— AFN使用、检测网络状态、HTTPS基本使用、WebView基本使用、OC和JS、NSInvocation、异常处理
1.AFN使用技巧1.在开发的时候可以创建一个工具类,继承自我们的AFN中的请求管理者,再控制器中真正发请求的代码使用自己封装的工具类。2.这样做的优点是以后如果修改了底层依赖的框架,那么我们修改这个工具类就可以了,而不用再一个一个的去修改。3.该工具类一般提供一个单例方法,在该方法中会设置一个基本的请求路径。4.该方法通常还会提供对GET或POST请求的封装。5.在外面的时候通过该工具类来原创 2017-01-03 10:57:49 · 1894 阅读 · 0 评论 -
iOS之多线程——概念、pthread、NSThread、GCD
1.基本概念1.1 进程进程是指在系统中正在运行的一个应用程序。每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内。1.2 线程(1)基本概念1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程),线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行。(2)线程的串行 1个线程中任务的执行是串行的,如果要在1个线程中执行多个任务,那么只能一个一个地按顺序原创 2016-12-29 16:41:39 · 670 阅读 · 0 评论 -
iOS之Quartz2D绘图(一)
01-PPT介绍1.什么是Quartz2D? 他是一个二维的绘图引擎,同时支持iOS和Mac系统2.Quartz2D能完成的工作 画基本线条,绘制文字,图片,截图,自定义UIView.3.Quartz2D实例演示.4.Quartz2D在开发中的价值 当我们的控件样式极其复杂时,可以把控件内部的结构给画出画,就是自定义控件.5.什么是图形上下文,上下文的类型有哪些? 图原创 2016-12-12 17:04:25 · 681 阅读 · 0 评论 -
iOS之Quartz2D绘图(二)
01-带有边框的图片裁剪具体实现思路:1.假设边框宽度为BorderW2.开启的图片上下文的尺寸就应该是原始图片的宽高分别加上两倍的BorderW,这样开启的目的是为了不让原始图片变形.3.在上下文上面添加一个圆形填充路径.位置从0,0点开始,宽高和上下文尺寸一样大.设置颜色为要设置的边框颜色.4.继续在上下文上面添加一个圆形路径,这个路径为裁剪路径. 它的x,y分别从BorderW这个原创 2016-12-26 16:58:00 · 314 阅读 · 0 评论 -
iOS之CALayer与核心动画(一)
01-CALayer的基本操作.1.CALayer简介: CALayer我们又称它叫做层. 在每个UIView内部都有一个layer这样一个属性. UIView之所以能够显示,就是因为它里面有这个一个层,才具有显示的功能. 我们通过操作CALayer对象,可以很方便地调整UIView的一些外观属性. 可以给UIView设置阴影,圆角,边框等等...2.操作la原创 2016-12-27 17:31:20 · 350 阅读 · 0 评论 -
iOS之const,static,extern简介
const,static,extern简介一、const与宏的区别(面试题):const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量。执行时刻:宏是预编译(编译之前处理),const是编译阶段。编译检查:宏不做检查,不会报编译错误,只是替换,const会编译检查,会报编译错误。宏的好处:宏能定义一些函数,方法。 const不能。宏的坏处:使用原创 2017-01-22 17:12:11 · 643 阅读 · 0 评论 -
iOS之Runtime简介和使用
一、runtime简介RunTime简称运行时。OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制。对于C语言,函数的调用在编译的时候会决定调用哪个函数。对于OC的函数,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。事实证明: 在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要声明过就不会原创 2017-01-22 17:16:49 · 312 阅读 · 0 评论 -
iOS之ReactiveCocoa简介和使用(一)
1.ReactiveCocoa简介ReactiveCocoa(简称为RAC),是由Github开源的一个应用于iOS和OS开发的新框架,Cocoa是苹果整套框架的简称,因此很多苹果框架喜欢以Cocoa结尾。2.ReactiveCocoa作用在我们iOS开发过程中,当某些事件响应的时候,需要处理某些业务逻辑,这些事件都用不同的方式来处理。比如按钮的点击使用action,ScrollView滚动使用原创 2017-02-13 18:18:25 · 8087 阅读 · 1 评论 -
iOS之关于使用 UNUserNotificationCenter 的本地通知
UNUserNotificationCenter是iOS10 推出的新的通知中心 ,最近的项目涉及的比较深,我就总结了一下:下面我们开始一步一步的来添加本地推送,1、首先在开始注册通知: UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; //监听回调事件 ...原创 2018-05-14 10:51:11 · 11297 阅读 · 1 评论 -
iOS之字典遍历enumeratekeysandobjectsusingblock
最近用到字典遍历,数组遍历的有关东西用到enumeratekeysandobjectsusingblock 块枚举法来遍历起初不知道回调参数中的stop是干什么用的 后来了解到他的神奇功效先看代码 NSDictionary *dictM2 = @{@"1":@"one",@"2":@"two",@"3":@"three"}; [dictM2 enumerateKeysAndObje原创 2018-05-14 11:19:34 · 5615 阅读 · 0 评论 -
iOS之sizeToFit 和 sizeThatFits的使用区别
首先我们可以看看苹果官方对这两个方法的解释:// return 'best' size to fit given size. does not actually resize view. Default is return existing view size- (CGSize)sizeThatFits:(CGSize)size; // calls sizeThatFits: with c...原创 2018-06-19 17:41:50 · 5370 阅读 · 0 评论 -
iOS之断言(NSAssert)的使用
NSAssert()是一个宏,用于开发阶段调试程序中的Bug,通过为NSAssert()传递条件表达式来断定是否属于Bug,满足条件返回真值,程序继续运行,如果返回假值,则抛出异常,并且可以自定义异常描述。NSAssert()是这样定义的:#define NSAssert(condition, desc)condition是条件表达式,值为YES或NO;desc为异常描述,通常为NSString。...原创 2018-06-27 10:17:22 · 494 阅读 · 0 评论 -
iOS之根据UUID和Keychain来确定一台iOS设备
今天公司项目需要获取iOS设备的唯一标识符。但是自在iOS7之后,伟大的Apple公司已经把系统提供获取唯一标识符的的API给禁用了。存在私有的API可以获取,但是会影响到上架,所以直接不考虑。然后网上搜了一下那些demo,发现不是存在BUG,就是用不了。于是自己花了点时间来整理了一下收集来的资料,整合成了一个绝对能用的例子。首先获取到的UUID在删除掉应用之后,是会变的。所以我们需要用到钥匙串来...原创 2018-06-27 14:14:45 · 1707 阅读 · 1 评论 -
iOS之获取手机DeviceToken,以及苹果测试推送工具Easy APNs Provider
一、获取手机DeviceToken- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. ...原创 2018-07-26 15:24:19 · 4001 阅读 · 0 评论 -
iOS之HealthKit使用,步数获取单例
1.ZFHealthManager.h#import <Foundation/Foundation.h>typedef NS_ENUM(NSInteger, ZFStepAuthorizationStatus) { ZFStepAuthorizationStatusNotDetermined = 0, ZFStepAuthorizationStatusShar...原创 2018-08-29 11:12:52 · 895 阅读 · 1 评论 -
iOS之SocketIO使用,单例
1.SocketIOHandler.h#import <Foundation/Foundation.h>@interface SocketIOHandler : NSObject+(SocketIOHandler*)shareInstance;- (void)connect;- (void)disconnect;- (NSUUID * _Nonnull)on:(NS...原创 2018-08-29 11:22:17 · 2867 阅读 · 0 评论 -
iOS之iOS 12.1 Tabbar从二级页面返回跳动问题解决方法(使用iPhone全系列包含iPhone X哦)
如果使用系统IOS12.1 UINavigationController + UITabBarController( UITabBar 磨砂),在popViewControllerAnimated 会遇到tabbar布局错乱的问题:- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)anim...原创 2018-11-21 12:01:50 · 595 阅读 · 0 评论 -
iOS之EGOCache缓存框架详细讲解
平常大多用SDWebimage做图片的缓存,如果做语音聊天SDWebimage就不太够用,所以推荐用EGOCache做文件缓存。EGOCache采用磁盘存储方式存储,如果文件使用频率很高可以缓存到内存中,减少io操作。1.EGOCache 作用EGOCache可以缓存实现了<NSCodeing>协议的对象、图片、语音、plist文件2.EGOCache 安装pod 'EGOCache'...原创 2018-05-14 10:47:59 · 533 阅读 · 0 评论 -
iOS之阻止设备锁屏
禁止自动休眠可以通过这一句话搞定: [UIApplication sharedApplication].idleTimerDisabled=YES;当然一定要慎用,记着退出程序时把自动休眠功能开启 [UIApplication sharedApplication].idleTimerDisabled=NO;比较适用于上传下载||耗时操作任务 不希望App开启状态被后台杀死 当然后台...原创 2018-05-14 10:45:09 · 344 阅读 · 0 评论 -
iOS之ReactiveCocoa简介和使用(二):MVVM
1.ReactiveCocoa常见操作方法介绍。1.1 ReactiveCocoa操作须知所有的信号(RACSignal)都可以进行操作处理,因为所有操作方法都定义在RACStream.h中,而RACSignal继承RACStream。1.2 ReactiveCocoa操作思想运用的是Hook(钩子)思想,Hook是一种用于改变API(应用程序编程接口:方法)执行结果的技术.Hook用处:截获原创 2017-02-13 18:20:59 · 1066 阅读 · 0 评论 -
iOS之蓝牙简介和使用(一):GameKit
蓝牙GameKit简介:* 实现蓝牙设备之间的通讯* 只能使用在iOS设备之间同一个应用内连接* 从iOS7开始过期了* 但是GameKit是最基本的蓝牙通讯框架* 通过蓝牙可以实现文件的共享(仅限设备沙盒中的文件)* 此框架一般用于游戏开发(比如五子棋对战)开始案例简介:* 使用蓝牙将两个iOS设备连接起来* 搜索对方的设备* 实现将手机中的图片发送给对方界面的搭建:蓝牙互连:搜索蓝牙设备原创 2017-02-14 16:27:55 · 1016 阅读 · 0 评论 -
iOS之蓝牙简介和使用(二):MutipeerConnectivity
蓝牙mutipeerConnectivity简介* iOS 7引入的一个全新框架* 多点连接* 替代GameKit框架* 多用于文件的传输* iOS设备不联网也能跟附近的人聊天* FireChat* See You Around* 以上近场聊天App都是基于mutipeerConnectivity框架* 搜索和传输的方式* 双方WIFI和蓝牙都没有打开:无法实现* 双方都开启蓝牙:通过蓝牙发原创 2017-02-14 16:29:19 · 627 阅读 · 0 评论 -
iOS之蓝牙简介和使用(三):CoreBlueTooth
CoreBlueTooth简介:可用于第三方蓝牙设备交互,设备必须支持蓝牙4.0iPhone的设备必须是4S或者更新iPad设备必须是iPad mini或者更新iOS的系统必须是iOS 6或者更新蓝牙4.0以低功耗著称,所以一般被称为BLE(bluetooth low energy)使用模拟器调试 Xcode 4.6iOS 6.1应用场景 运动手环智能家居 拉卡拉蓝牙刷卡器原创 2017-02-14 16:32:27 · 666 阅读 · 0 评论