自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

番薯大佬的专栏

快乐学习、快乐分享

  • 博客(21)
  • 资源 (53)
  • 收藏
  • 关注

原创 手写签名的实现

使用UberSignature实现手写签名功能。UberSignature效果图 代码示例 demo使用说明 1、添加源码(如下图所示) 2、导入头文件#import "UBSignatureDrawingViewController.h"3、实例化@interface ViewController ()@property (nonatomic, st...

2018-07-26 17:42:13 3243

原创 UITableViewStyleGrouped设置table样式时,出现空白间距

使用UITableViewStyleGrouped设置table样式时,且设置了属性tableFooterView时,table视图上下会出现空白间距。怎么破? 经过一番调试和代码修改后,发现原来是设置delegate、dataSource和tableFooterView的顺序有关导致的。修改成如下顺序,则显示正常:- (instancetype)initWithFrame:(CGR...

2018-07-19 13:51:34 2001

原创 UITableView列表reloadSections等刷新数据时屏幕跳动

使用如下代码解决屏幕跳动[UIView performWithoutAnimation:^{ NSIndexSet *reloadSet = [NSIndexSet indexSetWithIndex:1]; [self.workTable reloadSections:reloadSet withRowAnimation:UITableViewRowA...

2018-07-14 21:00:08 16483

原创 运行时机制重写descrption实现实体模型数据打印查看

使用前打印实体模型时,结果是这样的(lldb) po self.userModel<SXLoginModel: 0x7fb08bc36aa0>使用后打印实体模型时,结果是这样的(lldb) po [self.userModel descriptionShow]deptName : 南京校区;lastSigninTime : 2018-07-13 16:16:...

2018-07-13 16:30:53 392

原创 iPad开发中UISplitViewController和UIPopoverPresentationController的使用

对于 iPad 开发来说,因为屏幕大,为了用户操作的方便,所以通常使用 UISplitViewController来实现导航。 同时也会使用UIPopoverPresentationController实现浮窗功能。源码地址效果图 代码示例: 设置根视图控制器- (BOOL)application:(UIApplication *)application didFinishL...

2018-07-12 15:46:13 693

原创 CocoaPods的使用——新电脑下载源码后,pod目录异常

新电脑下载源码后,pod项目异常,如图所示: 细猜,可能的原因是原来的项目是通过pod安装了第三方依赖库,而对于当前的新电脑,可能开发环境还没有配置好,可能原因如下: 1、没有安装cocoapods 2、没有使用pod install安装依赖包根据这个思路,于是在终端进入项目文件夹,并执行pod install命令后,果然可以正常运行了。...

2018-07-07 11:40:53 360

原创 runtime方法替换

通过方法转换,将array添加元素的方法进行转换,避免添加nil对象时出现crash情况。#import <Foundation/Foundation.h>@interface NSMutableArray (RunTime)@end#import "NSMutableArray+RunTime.h"#import <objc/runtime.h>...

2018-07-07 07:54:00 763

原创 第四章 Runtime应用:实现字典和模型的自动转换

用runtime提供的函数遍历Model自身所有属性,如果属性在json中有对应的值,则将其赋值。示例#import <Foundation/Foundation.h>@interface Person : NSObject- (instancetype)initWithDict:(NSDictionary *)dict;@property (nonatomic, ...

2018-07-07 00:47:03 734

原创 第四章 Runtime应用:实现NSCoding的自动归档和自动解档

用runtime提供的函数遍历Model自身所有属性,并对属性进行encode和decode操作。 通常系统自带的数据类型,如:字典NSDictionary,数组NSArray,字符串NSString,布尔数据BOOL,数字对象NSNumber,NSData,NSDate等可以直接进行存储操作;但是自定义的数据类型,如果直接进行存储操作时,则会抛出异常,这时候就需要进行归档、解档处理。示例代...

2018-07-07 00:33:12 885 1

原创 第四章 Runtime应用:方法转换

swizzling应该只在+load中完成。 在 Objective-C 的运行时中,每个类有两个方法都会自动调用。 1、+load 是在一个类被初始装载时调用; 2、+initialize 是在应用第一次调用该类的类方法或实例方法前调用的。 两个方法都是可选的,并且只有在方法被实现的情况下才会被调用。swizzling应该只在dispatch_once中完成,由于swizzling改...

2018-07-06 23:52:55 262

原创 第四章 Runtime应用:方法添加

方法添加class_addMethod(Class _Nullable cls, SEL _Nonnull name, IMP _Nonnull imp, const char * _Nullable types) 1、cls 被添加方法的类 2、name 添加的方法的名称的SEL 3、imp 方法的实现。该函数必须至少要有两个参数,self,_cmd 4、...

2018-07-06 23:46:31 273

原创 第四章 Runtime应用:关联对象(添加属性)

关联对象(Objective-C Associated Objects)给分类增加属性。关联对象void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)获取关联的对象id objc_getAssociatedObject(id obje...

2018-07-06 23:41:19 391

原创 第三篇 Runtime消息转发

发送消息时会在对应的类对象中搜索方法列表,如果找不到则会沿着继承树向上一直搜索知道继承树根部(通常为NSObject),如果还是找不到并且消息转发都失败了就回执行doesNotRecognizeSelector:方法报unrecognized selector错。消息转发到底是什么呢?接下来将会逐一介绍最后的三次机会。 1、动态方法解析 2、备用接收者 3、完整消息转发动态方法解析 ...

2018-07-06 23:31:57 1145

原创 第二篇 Runtime消息传递

一个对象的方法像这样[obj doing],编译器转成消息发送objc_msgSend(obj, doing),Runtime时执行的流程是这样的: (1)通过obj的isa指针找到它的class; (2)在class的method list找doing(直接在cache里找到,避免去遍历objc_method_list); (3)如果class中没到doing,继续往它的superc...

2018-07-06 22:30:26 146

原创 第一篇 Runtime介绍

Objective-C Runtime Objective-C Runtime Programming Guide Objective-C 是一个动态语言,这意味着它不仅需要一个编译器,也需要一个运行时系统来动态得创建类和对象、进行消息传递和转发。高级编程语言想要成为可执行文件需要先编译为汇编语言再汇编为机器语言,机器语言也是计算机能够识别的唯一语言。使用OC进行面向对象开发,而C...

2018-07-06 22:20:55 191

原创 APP提交审核-App Review

App Store 审核指南常见 App 拒绝情况App Review 支持

2018-07-06 16:24:28 2239

原创 导航栏控制器的渐变

效果图 实现步骤 1、设置导航栏视图控制器中的navigationBar背景图标[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];2、设置导航栏视图控制器中的navigationBar子视图的背景颜色ba...

2018-07-06 01:42:30 322

原创 修改bounds属性后的效果

UIView中的属性bounds默认的origin是x=0.0,y=0.0,且size中的宽高默认等于frame中size的宽高。当修改了bounds属性中的origin时,会影响到添加到其中的子视图frame中的origin;当修改了bounds属性中的size时,会影响到其自身frame中的size;// 初始化时的frameCGRectMake(20.0, 20.0, 200.0, 200...

2018-07-04 23:15:01 2007

原创 使用工具Hopper对iOSAPP反汇编

HopperHopper Disassembler是Mac上的一款二进制反汇编器,基本上满足了工作上的反汇编的需要,包括伪代码以及控制流图(Control Flow Graph),支持ARM指令集并针对Objective-C的做了优化。Hopper能把二进制文件中的所有函数名,方法名,代码逻辑结构,毫无遮掩的、一览无遗的反汇编。一、安装1、下载dmg文件(有免费试用版本,及购买版本)二、使用1、打...

2018-07-02 21:43:01 3692

原创 使用脚本对代码混淆

一、创建敏感字符文件1、在终端进入当前项目目录2、创建文件:touch codeConfusion.list3、文件添加到项目:Xcode-菜单栏-File-Add Files To 项目名称4、编辑内容,即写入需要混淆的函数名等,如:showMessageclearrandomTime二、创建混淆脚本文件1、在终端进入当前项目目录2、创建脚本文件:touch codeConfusion....

2018-07-02 21:05:23 1818

原创 使用工具Class-dump对iOSAPP逆向

Class-dumpClass-Dump是一款可以导出头文件的命令行工具,该程序用于检查Objective-C运行时信息存储在Mach-O文件中的头文件信息提取出来,并生成对应的.h文件。官网:http://stevenygard.com/projects/class-dump/一、安装1、下载class-dump安装文件2、双击打开安装3、选择复制文件:class-dump4、粘贴到目录:/硬盘...

2018-07-02 17:15:45 664

DemoNSUserdefault

iOS研发中数据缓存UserDefault的使用(Demo+文档)

2016-04-17

DemoSqlite

iOS研发中数据缓存sqlite、FMDB、LKDBHelper的使用(Demo+文档)

2016-04-17

DemoKeychain

iOS研发中数据缓存keychain的使用(Demo+文档)

2016-04-17

DemoCoreData

iOS研发中数据缓存coreData的使用(Demo+文档)

2016-04-17

DemoArchivedCoding

iOS研发中数据缓存archiver归档的使用(Demo+文档)

2016-04-17

SQLite关系型数据库的使用

iOS研发中数据缓存SQLite的使用

2016-03-26

FMDB数据库使用

iOS研发中数据缓存FMDB的使用

2016-03-26

coreData使用

iOS研发中数据缓存coreData的使用

2016-03-26

Archiver归档的使用

iOS研发中数据缓存archiver归档的使用

2016-03-26

DemoMVVM架构模式

iOS开发中常用到的技术架构为MVC,但也有用到MVVM。两者主要体现在VM将业务相关逻辑进行了封装,减轻了Controller的负担。

2016-03-02

Demolimit输入限制

在iOS开发中,常会遇到输入限制的情况。本文件档整理了常用到的输入限制,如数字输入限制,长度限制等。定义的方法既有是在代理方法中使用的,也有在通知方法中使用。

2016-02-15

DemoTimeDate

iOS开发中常用到的时间类处理封装,包括各种转换格式。如NSDate转成NSString,或NSString转成NSDate,等。

2016-01-07

小方块输入框

自定义方块输入框,类似于微信支付密码的小方块输入框

2015-11-28

CollectionView的使用

UICollectionView的使用范例,即瀑布式列表的使用。

2015-11-26

iOS移动开发框架

iOS移动开发根视图开发框架设置,Demo中包括抽屉样式,tabbar样式

2015-11-04

iOS移动开发AES加解密

iOS移动开发中使用到的AES加解密技术,使用AES256位加密,解密。

2015-11-04

iOS移动开发MD5加密

iOS开发中常用到的字符串进行MD5加密,区分32位大小写加密,16位大小写加密

2015-11-04

DemoKVO_KVC

KVO即Key-Value Observing,称为键值观察者。是一种编程设计模式,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。 KVC即Key-Value Coding,称为键值编码,它是一种可以直接通过字符串的名字(key)来访问类属性的机制。

2014-09-03

Notification

通过使用NSNotification通知类,可以实现一对多的传递关系,同时也能很好的避免类与类之间层层递进的关系。但是必须记得在使用过程中可能出现通知会被多次接收,并执行相关的方法,避免这种情况出现必须在接收通知前先移除要接收的通知。

2014-07-11

设备闪光灯

iOS开发中,使用设备闪光灯,即打开或关闭设备的闪光灯。如开发手电筒功能,或是扫一扫功能时设置闪光灯。

2014-07-02

DemoTargetDev

一个项目多个target,通过配置不同的信息,类似多个app。

2019-02-13

demoHitTest

子视图超出父视图范围时,子视图交互也能实现响应事件。

2018-11-08

DemoSignature

使用UberSignature实现手写签名。简单易用,接口API少而简,可以设置位置和大小,也可以设置画笔颜色。

2018-07-26

ViewDeck抽屉菜单

使用第三方框架ViewDeck在项目中设置抽屉式菜单。即设置中间视图控制器,左侧视图控制器,以及右侧视图控制器。或上、下视图控制器。

2017-09-19

RESideMenu抽屉视图

使用第三方框架RESideMenu在项目中设置抽屉式菜单。即设置中间视图控制器,左侧视图控制器,以及右侧视图控制器。

2017-09-19

DemoTablePageAndFrame

计算拖动时的页码以及自动加载

2017-04-18

DemoMKWebView

web view使用的优化,使用MKWebView替换UIWebView

2016-09-23

licecap录制gif软件

录制gif软件

2016-09-09

Mac中jenkins的使用

使用jenkins进行自动化构建

2016-08-23

DemoAnimation

动画效果的实现操作

2016-08-01

DemoNetwork

iOS原生网络请求,使用session,或connection方式

2016-07-24

DemoEmailSMS

iOS APP应用中打电话,发短信,发邮件功能的实现

2016-07-15

DemoThread

多线程使用示例,包括thread,operation,GCD。

2016-07-14

DemoRecognizer

手势操作UIGestureRecognizer,或UITouch

2016-07-09

DemoNSTimer

NSTimer计时器的使用,启动,停止等操作。

2016-07-08

DemoImageTableView

自定义cell中使用添加多个图片并自适应cell高度(类型于电商平台的商品评价添加图片)

2016-07-04

DemoIceRequest

iOS开发中,使用ZeroC ICE进行网络请求。

2016-05-12

DemoRecorder

录音以及音频的播放操作处理。

2016-04-29

DemoiflyMSC

使用科大讯飞进行语音书写。

2016-04-28

DemoPlist源码文档

iOS研发中数据缓存plist的使用(Demo+文档)

2016-04-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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