![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS-OC
文章平均质量分 68
CoyoteK
这个作者很懒,什么都没留下…
展开
-
Aspects框架
Aspects简介:Aspect是一个基于method swizzing的iOS函数替换的轻量级的第三方库(不足千行代码),有关iOS运行时的相关知识,移步 runtime从入门到精通,他可以很好的实现勾取一个类或者一个对象的某个方法。Aspects 的 github地址面向切面(AOP)编程面向切面编程就是通过预编译和运行期动态代理实现给程序动态统一添加功能的一种技术,使用Aspects框架就是原创 2018-03-06 16:37:42 · 4925 阅读 · 0 评论 -
关于UITextView的封装
目前能够实现的功能:设置占位字符,可以设置占位字符的字体大小,字体颜色,字体高亮颜色,也可以设置属性字符串作为占位字符设置最大行数,超过最大行数之后滚动显示设置最多输入的文字个数,超过之后不能输入,并触发block回调设置输入框的圆角弧度设置光标的宽度和高度原创 2017-05-15 20:12:32 · 625 阅读 · 0 评论 -
iOS 旋转动画的几种实现方式
第一种:使用CABasicAnimated方法这种方法是最简单的方法CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@“transform.rotation.z"];//默认是顺时针效果,若将fromValue和toValue的值互换,则为逆时针效果animation.fromValue = [NSNumb原创 2017-06-26 18:29:35 · 29515 阅读 · 0 评论 -
使用UITextView实现文字点击事件
原理:采用的是UITextView的URL链接,设置UITextView.attributedText并设置代理delegate,响应的回调函数shouldInteractWithURL。实现://使用textView的URL链接 UITextView *protocolTextView = [[UITextView alloc] init]; [_mainScrollView ad原创 2017-07-03 15:56:16 · 4723 阅读 · 1 评论 -
带进度条的WKWebView
1. 导入头文件 #import <WebKit/WebKit.h>2. 实现代理<WKUIDelegate,WKNavigationDelegate>3. 创建WKWebView,添加观察者- (void)setupSubViews { _webView= [[WKWebView alloc] initWithFrame:CGRectMake(0, 64, Screen_Width, Scr原创 2017-07-03 15:32:37 · 358 阅读 · 0 评论 -
关于UITextField的封装
直接上代码:.H文件://// KPTextField.h//// 如果有占位字符,请先设置占位字符内容,再设置相关属性//// Created by 刘鲲鹏 on 2017/5/16.// Copyright © 2017年 刘鲲鹏. All rights reserved.//#import <UIKit/UIKit.h>#define KPTextFieldPadding原创 2017-05-17 20:03:32 · 1276 阅读 · 0 评论 -
CocoaPods使用简明教程
什么是CocoaPodsCocoaPods是一个用来帮助我们管理第三方依赖库的工具。它可以解决库与库之间的依赖关系,下载库的源代码,同时通过创建一个Xcode的workspace来将这些第三方库和我们的工程连接起来,供我们开发使用。 使用CocoaPods的目的是让我们能自动化的、集中的、直观的管理第三方开源库。CocoaPods的原理CocoaPods的原理是将所有的依赖库都放到另一个名为Pod原创 2017-05-03 19:52:22 · 401 阅读 · 0 评论 -
CAGradientLayer
CAGradientLayer是用来生成两种或更多颜色平滑渐变的。用Core Graphics复制一个CAGradientLayer并将内容绘制到一个普通图层的寄宿图也是有可能的,但是CAGradientLayer的真正好处在于绘制使用了硬件加速。基础渐变我们将从一个简单的红变蓝的对角线渐变开始(见清单6.6).这些渐变色彩放在一个数组中,并赋给colors属性。这个数组成员接受CGColorRef转载 2017-03-07 18:22:49 · 519 阅读 · 0 评论 -
集成个推实现推送跳转到指定页面
项目之前使用的信鸽推送,觉得不怎么好用,就在闲下来的时候换成了个推,个推的文档还是比较详细的,简单的推送只要看下文档就OK了。透传个推有个透传的功能,使用这个功能进行推送的时候,如果APP在前台运行时,是不会显示推送信息的;如果APP是在后台或者杀死的情况下,是会有推送通知的显示的。这个一定要和推送通知区分开来。(最重要的是要和后台人员商量一致,再传参数的时候是使用透传还是消息通知,如果使用透传功能原创 2017-02-22 14:37:03 · 7625 阅读 · 0 评论 -
防止按钮快速连续点击造成多次响应的方法
用户快速点击某个按钮,导致页面重复push或者重复发送网络请求。这样的问题既对用户体验有影响,而且还会一定程度上增加服务器的压力。主要使用以下办法:在每次点击时先取消之前的操作- (void)buttonClicked:(id)sender{ //这里是关键,点击按钮后先取消之前的操作,再进行需要进行的操作 [[self class] cancelPreviousPerformRequ原创 2017-01-10 20:06:12 · 4924 阅读 · 0 评论 -
加载JIF动画的几种方法
1、使用UIWebView// 读取gif图片数据 注意:传入nil参数可能有警告 NSData *data = [NSData dataWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"001" ofType:@"gif"]]; UIWebView *webView = [[UIWebView allo原创 2017-01-10 19:39:04 · 1366 阅读 · 0 评论 -
IOS四种反向传值的方法
方法一:使用target-action设计模式代码如下:(由根视图推出子视图,再由子视图推出根视图,在推出根视图时,子视图传一个color的属性给根视图,用来修改根视图的背景颜色)根视图控制器代码://.m文件- (void)viewDidLoad{ [super viewDidLoad]; self.view.backgroundColor = [UIColor redColor转载 2016-11-15 16:58:37 · 725 阅读 · 0 评论 -
iOS 钥匙串相关操作
这两天闲下来,整理了一下之前的项目,看到这个工具类,拿出来分享一下。钥匙串操作工具类,实现钥匙串的存储,读取,删除操作。直接上代码://// KeyChainStore.h// GeXiaZi//// Created by Coyote on 16/10/18.// Copyright © 2016年 apple. All rights reserved.//#import <F原创 2017-07-06 15:04:10 · 645 阅读 · 0 评论 -
XCode9新功能官方文档翻译
Xcode 9的新功能Xcode是用于为Apple TV,Apple Watch,iPad,iPhone和Mac创建应用程序的完整开发人员工具集。Xcode开发环境以tvOS SDK,watchOS SDK,iOS SDK和macOS SDK的形式捆绑Instruments分析工具,Simulator和操作系统框架。Xcode 9的亮点Xcode 9包括整体质量改进以及广泛的新功能。全新编辑。快速翻译 2017-07-06 19:08:23 · 1080 阅读 · 0 评论 -
App启动时间的测量和优化
启动时间的测量准备知识简单了解一下App 的启动过程:解析Info.plist加载相关信息,例如如闪屏沙箱建立、权限检查Mach-O加载如果是胖二进制文件,寻找合适当前CPU类别的部分加载所有依赖的Mach-O文件(递归调用Mach-O加载的方法)定位内部、外部指针引用,例如字符串、函数等执行声明为attribute((constructor))的C函数加载类扩展(Category)中原创 2018-03-05 18:09:05 · 1369 阅读 · 0 评论 -
手势密码与TouchID
手势密码绘制:首先for循环添加布局九个圆形btn,给btn加上9个对应的tag值,btn上面的图片采用绘制的方法,分别绘制出btn的未选中状态、选中状态、选错状态对应的图片创建一个可变数组,用来存放选中的按钮通过touch的began、moved、ended来监听touch事件,从而更改btn的选中状态,并添加到数组中touchsMoved 方法中通过 setNeedsDis...原创 2018-03-16 09:32:06 · 984 阅读 · 0 评论 -
日期时间处理相关工具类
//// KPDateTool.h// KPDateTool//// Created by 刘鲲鹏 on 2018/2/28.// Copyright © 2018年 刘鲲鹏. All rights reserved.//// 日期时间处理相关工具类#import <Foundation/Foundation.h>@interface KPDateToo...原创 2018-03-02 10:38:41 · 455 阅读 · 0 评论 -
横竖屏切换那些事
采用系统提供的方法来进行横竖屏切换一、监听屏幕旋转方向在处理iOS横竖屏时,经常会和UIDeviceOrientation、UIInterfaceOrientation和UIInterfaceOrientationMask这三个枚举类型打交道,它们从不同角度描述了屏幕旋转方向。UIDeviceOrientation:设备方向iOS的设备方向是通过iOS的加速计来获取的。原创 2018-01-30 11:16:13 · 462 阅读 · 0 评论 -
Xcode调试小技巧 - 提高开发效率
1. LLDB常用调试命令LLDB是XCode内置的为我们开发者提供的调试工具,可以在设置断点的时候在控制台中输入相关的lldb命令进行调试。p :用于输出基本类型(lldb) p cell(HomeSupplyOrBiddingCollectionViewCell *) $0 = 0x00007fa7cedb27f0po :用于输出 Objective-C 对象(lldb) po cell<H转载 2017-12-05 17:42:47 · 432 阅读 · 0 评论 -
iOS 常见的两种页面跳转
导航栏push出来的页面返回之前某个的页面方法1:UIViewController *vc = self.navigationController.viewControllers[i];// i是navigationController堆栈中的第几个控制器[self.navigationController popToViewController:vc animated:YES];方法2:NSAr原创 2017-08-23 17:00:04 · 2019 阅读 · 0 评论 -
iOS跳转QQ聊天应用
首先在info.plist里面添加LSApplicationQueriesSchemes(Array类型) 然后插入weixin, wechat, mqq的string类型子项,如下图:// 判断手机是否安装QQ 微信App// 判断手机是否安装QQ if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString转载 2017-08-23 15:56:44 · 2764 阅读 · 0 评论 -
使用 XHLaunchAd 快速实现app启动广告
XHLaunchAd 的 github 代码地址 : [](https://github.com/CoderZhuXH/XHLaunchAd) 1. Cocopods导入pod 'XHLaunchAd'2. 在 AppDelegate.m 中加入头文件#import "XHLaunchAd.h"#import "RTGlobalWebViewViewController.h" // 自己封装的简原创 2017-08-23 10:54:08 · 1074 阅读 · 0 评论 -
极光推送的集成
在 AppDelegate.m 中的 didFinishLaunchingWithOptions 代理方法中加入下面代码/** -------------- 配置极光推送 -------------- */ if ([[UIDevice currentDevice].systemVersion floatValue] >= 10.0) { /** 初始化APNs */ JPU原创 2017-08-23 10:24:07 · 383 阅读 · 0 评论 -
WKWebView获取内容高度
*webView = [[UIWebView alloc] init]; [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"urlString"]]];#pragma mark - WKNavigationDelegate// 页面加载完成之后调用 此方法会调用多次- (void)webView转载 2017-06-26 19:16:14 · 7582 阅读 · 1 评论 -
SDWebImage计算缓存值与清除缓存
显示缓存值:UILabel *cacheLabel = [[UILabel alloc] initWithFrame:CGRectMake(JKScreenW - 140, 0, 100, 40)];[cell addSubview:cacheLabel];cacheLabel.font = [UIFont jk_systemFontOfPxSize:28];cacheLabel.textCo原创 2017-09-04 15:52:15 · 448 阅读 · 0 评论 -
分割线 - layer
对于一些没有事件响应的视图,比如分割线,我们可以直接添加layer来达到显示效果:#import <UIKit/UIKit.h>@interface UIView (HTExtension)- (void)addLineLayerWithX:(CGFloat)x Y:(CGFloat)y Width:(CGFloat)width Height:(CGFloat)height Color:(UICo原创 2017-08-13 16:10:51 · 1875 阅读 · 0 评论 -
runtime从入门到精通(六)—— runtime在实际开发中的应用
上一篇文章,我们学习了runtime的消息发送和消息转发机制(查看链接: runtime从入门到精通(五)—— 消息发送和消息转发 ),倒到此为止,有关runtime的理论知识介绍就先告于段落,小伙伴们,真正的干货来了,runtime在实际的开发中到底有何牛X的作用?我们该怎么使用这么牛X的工具呢?原创 2016-09-08 12:08:23 · 7227 阅读 · 1 评论 -
runtime从入门到精通(九)—— 万能界面跳转
由于文章篇幅长度原因,笔者单独用一篇文章来介绍使用runtime来实现万能控制器跳转。查看完整的runtime在实际开发中的使用点击链接 ——> runtime从入门到精通(六)—— runtime在实际开发中的应用 在你的开发过程中,是否遇到过如下的需求:在tableView类型的展示列表中,点击每个cell中人物头像都可以跳转到人物详情,可参见微博中的头像,同理包括转发、评论按...转载 2016-09-08 16:16:34 · 2322 阅读 · 2 评论 -
JSON 语法 及 解析
JSON是一种轻量级的数据交换格式 从结构上看,所有的数据(data)最终都可以分解成三种类型:第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字 (numbers),比如”北京”这个单独的词 第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一 起,又叫做数组(array)或列表(List),比如”北京,上海” 第三种类型是映射(ma原创 2015-11-18 19:45:48 · 1432 阅读 · 0 评论 -
iOS网络构架 与 web服务器 (三次握手)
iOS中的网络构架(从上层到下层依次为Cocoa\Web Kit\Core Foundation\OS\Hardware)Cocoa (面向对象的框架集) 包含基于OC的APICocoa层是基于Core Foundation实现的NSURL : 就是我们在浏览器上看到的网站的地址,是一个字符串,这个字符串比较复杂,包括很多请求数据,在请求过程中需要解析出来每个部门,所以封装一个 NSURLWeb原创 2015-11-18 19:28:07 · 1726 阅读 · 0 评论 -
KVO
KVO (键值观察) (Key-value-observing)是一种机制,允许当一个对象的某些属性的值被修改后会通知另外观察该变化的对象。常用于MVC中的Model与Controller之间的通信。Model与Controller之间的通信的两种方式:通知中心(通知中心占用主线程,比较耗费系统性能)KVO(键值观察)使用KVO步骤注册,指定被观察者的属性 实现回调⽅法移除观察 方法/原创 2015-11-18 17:57:03 · 608 阅读 · 0 评论 -
iOS UI 知识点
懒加载数据模型if语句判断是否为空然后取路径从路径中取出数组(数组内容为字典)把字典转换成模型返回模型 例子: - (NSMutableArray *)tgModels{if (_tgModels == nil) { NSString *path = [[NSBundle mainBundle] pathForResource:@"tgs" ofType:@"plist"原创 2015-11-04 22:12:58 · 1022 阅读 · 0 评论 -
真机调试 与 响应者链
开发者账号:公司/个人:99$每年,可以有100台机器调试。 企业:299$每年,可以添加无数台机器,但是不能上传到 appstore写信 :先用哈希算法生成信件的摘要,然后使用私钥对摘要进行加密,生成“数字签名”,将这个签名附在信件下面,一起发送。 收信 :先用公钥解密数字签名,再对信件本身用哈希算法解析。公钥和私钥配对使用,私钥一般是自己拿着的,公钥是给别人的 公钥加密后用私钥解密,原创 2015-11-18 17:52:38 · 348 阅读 · 0 评论 -
UITouch 与 手势识别器
交互相关的属性userInteractionEnabled 默认是YES ,如果设置为NO则不响应用户事件,并且把当前控件从事件队列中删除。也就是说设置了userInterfaceEnabled属性的视图会打断响应者链导致该view的subview都无法响应事件。multipleTouchEnabled 默认是NO,如果设置为YES则支持多点触碰。exclusiveTouch 默认是NO,如原创 2015-11-18 17:55:37 · 982 阅读 · 0 评论 -
“野指针”
野指针:指针指向的对象已经被释放了,这个指针就叫做野指针僵尸对象:一个已经被释放的对象 就叫做僵尸对象Xcode检测野指针Xcode检测僵尸对象野指针与内存泄漏原创 2016-08-20 11:54:01 · 438 阅读 · 0 评论 -
“循环引用”
循环引用指两个对象相互强引用了对方,即retain了对方,从而导致两个对象都无法被释放,引发了内存泄漏现象。在开发中很容易出现循环引用,循环引用可能存在于代码的每个角落,会使内存消耗过高,性能变差,也可能会导致程序崩溃。原创 2016-08-20 11:49:07 · 1645 阅读 · 0 评论 -
对“回调函数”的理解
对“回调函数”的理解原创 2016-08-12 22:07:47 · 386 阅读 · 0 评论 -
进程与线程
进程与线程进程是用开飞陪系统资源的,进程包含多个线程,一个进程的启动包含主线程的启动了解概念cpu好比一个工厂,每个车间是一个进程,车间里面的工人是线程一个进程的内存空间是共享的,每个线程都可以使用这些共享的内存,特别的:某些内存空间,当一个线程使用时,其他线程必须等待它结束,才能使用这块内存,这就需要加“互斥锁”(Mutex),防止多个线程同时读写某一块内存区域;某些内存空间,可以提供给固定数目的原创 2015-11-18 20:46:20 · 464 阅读 · 0 评论 -
AFNetworking
摘要AFNetworking是一个网络库,适用于iOS以及Mac OS X. 它构建于 NSURLConnection, NSOperation, 以及其他熟悉的Foundation技术之上.http属于url,url我们叫链接,http我们叫请求和响应 get请求就像明信片,post请求就像信封,东西在请求体中向服务器请求数据的时候基本上是用的http的请求序列化,是http的表单提交,从服原创 2015-11-19 11:55:09 · 600 阅读 · 0 评论 -
内存泄漏
1. 导致内存泄漏发生的常见原因2. 使用Xcode自带Leaks工具进行内存泄漏检测原创 2016-08-20 12:42:30 · 676 阅读 · 0 评论