![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS开发
岑志军
男人只说三分话,留下七分打天下!!!
展开
-
iOS模仿系统相机拍照你不曾注意过的细节
距离上次写博客竟然过了一个月了,一方面是最近项目比较忙,另一方面是实在是有点儿懈怠了,强烈谴责一下自己。其实我最近在看一些技术书籍,发现一些好的书真心对自己帮助很大,看书的过程,好多原来模糊的概念、问题,都能感觉恍然大悟。当提笔想总结成一篇文章的时候,发现网上早已经有大量的优秀文章出现,所以就不敢献丑了。今天写的一篇文章,是最近自己项目中用到的,不算什么难点,只是感觉有必要记录一下。需...原创 2018-07-01 17:45:46 · 1845 阅读 · 0 评论 -
OC和Swift互相跳转
欢迎访问我的个人博客首先在需要引入Swift的文件中导入头文件#import "工程名-Swift.h"OC跳转Swift页面:#import "ViewController.h"#import "OCAndSwift-Swift.h" // 引入头文件@interface ViewController ()@end@implementation ViewController-原创 2017-12-09 18:44:49 · 1977 阅读 · 0 评论 -
iOS保存联系人到系统通讯录
欢迎访问我的个人博客1、首先判断当前通讯录是否存在这个联系人// 判断通讯录是否存在某个联系人+ (BOOL)isExistContactNameByName:(NSString *)contactName{ ABAddressBookRef addBook = nil; __block BOOL isExist = NO; CFErrorRef error = nil;原创 2017-11-13 16:32:33 · 1876 阅读 · 0 评论 -
iOS友盟错误分析定位
欢迎放我我的个人博客进入友盟后台点击:错误分析->错误列表 看到如下:点击一个进入详情,看到如下:打开Xcode->Windows->Organizer->archivers选择你要查看的错误报告所在的版本,这个一定要选对!!!显示包内容找到dSYMs和Products下的Applications下的文件,并将它们拷贝到一个文件夹下打开终端cd到刚才新建的文件夹(错误报告)的目录下,输入如下原创 2017-11-10 17:47:17 · 335 阅读 · 0 评论 -
iOS自动打开闪光灯
// 1.获取硬件设备 AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; // 2.创建输入流 AVCaptureDeviceInput *input = [[AVCaptureDeviceInput alloc]initWithDevice:devi原创 2017-07-21 16:03:00 · 867 阅读 · 0 评论 -
iOS UILabel设置中划线不能包含中文
今天写代码突然发现给UILabel设置中划线失效了,纠结了好久,终于找到解决办法(有可能是iOS10.3的bug,别的系统没事),解决办法,只需添加一个富文本属性即可: NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:@"15.0元"]; [att原创 2017-06-27 14:48:38 · 286 阅读 · 0 评论 -
iOS多线程技术方案
多线程技术方案转载自目录一、多线程简介1、多线程的由来2、耗时操作的模拟试验3、进程和线程4、多线程的概念及原理5、多线程的优缺点和一个Tip6、主线程7、技术方案二、Pthread1、函数2、参数和返回值3、使用三、NSThread1、创建一个新的线程2、线程的状态 3、线程的转载 2017-06-19 11:41:12 · 347 阅读 · 0 评论 -
WKWebView常见功能及如何返回上级界面
1、WKWebView的简单初始化- (WKWebView *)webView{ if (_webView == nil) { _webView = [[WKWebView alloc] initWithFrame:self.sContentView.bounds]; [_webView setAutoresizingMask:UIViewAutoresizi原创 2016-07-22 10:49:41 · 19636 阅读 · 0 评论 -
iOS应用程序内购/内付费
iOS应用程序内购/内付费(一)标签: IOS内付费AppStoreStoreKitStoreKit.hItunesConnect2015-01-15 15:25 91583人阅读 评论(64) 收藏 举报 分类:IOS开发(53) 版权声明:本文为博主原创文章,未经博主允许不得转载。很久之前就想出一篇iOS内付费的教程,但是转载 2017-06-01 18:56:44 · 441 阅读 · 0 评论 -
iOS-URLEncode和URLDecode
// urlencode- (NSString *)urlEncodedString { NSString *encodedString = (NSString *) CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,原创 2017-06-05 10:43:36 · 1536 阅读 · 0 评论 -
iOS广告启动页
产品需求:启动页逻辑: 上部分为广告区域,可在运营后台配置图片+跳转页(同No.2);首次开 APP,则请求一次配置,失败或无配置则不显示,一旦有网了即刻请求一次并 做好缓存; 客户端每4小时请求一次;每两小时显示一次广告页内容 用户点击则跳转已配置页面;启动页上有5s倒计时,时间到了启动页关闭,也 可手动点击跳过启动页,广告已过期也不显示。服务端返回模型: { “image” : “h原创 2017-05-26 16:49:35 · 910 阅读 · 0 评论 -
TTTAttributedLabel高亮显示手机号码、网址
1、初始化label- (TTTAttributedLabel *)traceLabel{ if (_traceLabel == nil) { _traceLabel = [TTTAttributedLabel new]; [_traceLabel setTextAlignment:NSTextAlignmentLeft]; // NSTextC原创 2017-05-12 18:09:58 · 1197 阅读 · 0 评论 -
解决iOS10不能跳转系统WiFi列表的问题
第一种方式:在iOS10更新后,系统设置跳转被禁用,只能跳转App设置,但是最近发现苹果又更新了URLscheme,亲测可用,建议iOS10已下,还用原来的scheme原创 2016-11-22 15:05:34 · 4320 阅读 · 1 评论 -
iOS打开闪光灯
// 闪光灯 UIButton *torchBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [torchBtn setView_size:SS_ADAPT_SCALE_FLOAT_SIZE_6P(65, 65, 85, 85)]; [torchBtn setBackgroundImage:[UIImage imageNa原创 2017-04-10 11:00:05 · 810 阅读 · 0 评论 -
(3)Cycript
什么是CycriptCycript是Objective-C++、ES6(JavaScript)、Java等语法的混合物可以用来探索、修改、调试正在运行的Mac\iOS APP官网: http://www.cycript.org/文档: http://www.cycript.org/manual/通过Cydia安装Cycript,即可在iPhone上调试运行中的APPC原创 2018-01-23 17:33:39 · 534 阅读 · 0 评论 -
(4)Reveal真机调试
Reveal是一款调试iOS程序UI界面的神器官网:https://revealapp.com下载:https://revealapp.com/download/建议下载至少Reveal4版本,支持USB连接调试,速度快。低版本的只能WiFi连接调试调试环境配置iPhone上安装Reveal Loader安装完Reveal Loader后,打开【设置】,选择需要调试的APP原创 2018-02-02 00:12:48 · 773 阅读 · 0 评论 -
iOS逆向-ipa包重签名及非越狱手机安装多个微信
前一段时间学了点儿逆向相关的一些东西,但是都是基于越狱手机上的操作,给视频类应用去广告之类的。随着苹果生态圈的逐渐完善、及苹果对自身系统的保护越来越严格,导致现在的iPhone手机并不像以前那样存在大量的越狱用户。前段时间我自己申请了个微信小号,申请小号的目的就是原来微信号好友中乱七八糟的人实在太多,感觉自己的朋友圈都是一些无关紧要的垃圾信息,曾经关闭了一段时间的朋友圈,但是最近遇到了...原创 2018-05-29 23:26:04 · 6910 阅读 · 0 评论 -
KVO详解及底层实现
什么是KVO??KVO就是NSKeyValueObserving,请看官方文档的解释:大概翻译如下:一种非正式协议,通知其他对象的指定属性发生了改变。简单理解就是,可以监听一个对象的某个属性是否发生改变。那么问题来了,什么是非正式协议??有正式协议吗??麻蛋,本来想找官方文档的,找了半天没找到。从Stackoverflow找到了答案,貌似原来官方文档的链接失效了...原创 2018-05-20 23:06:53 · 568 阅读 · 0 评论 -
fastlane实现自动化打包
正常产品开发完成之后,我们都需要给测试人员打包,又是测试包,又是生产包的,打一次包需要浪费十几分钟的时间,甚至有时候,你刚打完包,产品过来告诉你某个地方需要微调一下(麻蛋,这个时候是不是想弄死他),但是没办法,只好改完bug,继续打包,就这样可能一上午或者一下午就这样浪费了,所以有一个能够自动化打包的工具不仅能够为我们节省大量的时间,还可以让我们能够装逼。。。。。(这是重点)其实自动化...原创 2018-04-26 16:30:57 · 772 阅读 · 0 评论 -
Quartz2D实战-画板工具
一直想让自己每天都能进步,但是学习这个事情一直都无法坚持,只有自己感觉到了紧迫感,才会敲起代码,研究自己以前没接触过的知识,写博客的目的就是希望能够和更多的朋友一起讨论,促进交流,共同进步!!!什么是Quartz2DQuartz2D的API是纯C语言的,它是一个二维绘图引擎,同时支持iOS和Mac系统。Quartz2D的API来自于Core Graphics框架,数据类型和函数基本...原创 2018-04-21 13:19:24 · 238 阅读 · 0 评论 -
(4)OC中消息和消息转发-02
上篇文章讲到,如果通过_class_resolveInstanceMethod和- (id)forwardingTargetForSelector:(SEL)aSelector还是没找到IMP,也就是方法的实现,那我们只能手动添加方法的实现,也就是上篇文章提到的regular forwarding或者Normal Forwarding:我们先看一下方法的调用过程都执行了哪些方法?首先我们把方法...原创 2018-03-28 18:52:35 · 202 阅读 · 0 评论 -
(3)OC中消息和消息转发-01
欢迎访问我的个人博客前一段时间有朋友问了下面的这个问题,我给出的回答是这样的:其实上面回答的方法调用也都是基于以前对runtime的理解,和自己试验出来的结果,但是,回答完这个问题之后,抱着探究到底的精神(其实是这几天产品没提什么需求,有点儿闲),问了自己一个问题:你怎么知道是底层调用的是这几个方法??。。。又是一番查资料,验证问题。。。下面正式开始分析:首先新建一个Pe...原创 2018-03-26 18:13:21 · 234 阅读 · 0 评论 -
(1)Objective-C的本质
欢迎访问我的个人博客众说周知,我们平时编写的OC代码,底层都是C/C++实现的我们可以通过一个终端指令,将我们的OCdiamante转换成C/C++代码xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc 文件名 -o 输出的CPP文件例如:xcrun -sdk iphoneos clang -arch arm6...原创 2018-03-19 17:48:48 · 2357 阅读 · 0 评论 -
(2)NSNumber及Tagged Pointer
欢迎访问我的个人博客根据上一篇文章的总结,我们很容易发现@interface Student : NSObject{ @public int _age; int _no;}一个Student对象在64位架构下占了16个字节,其中isa占8个字节,两个int变量分别占了4个字节,但是这种方式适合所有OC对象吗??哈哈,并不是。。。今天早上有朋友问N...原创 2018-03-22 18:51:15 · 318 阅读 · 0 评论 -
(7)theos安装
安装签名工具ldid先确保安装了brew$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"利用brew安装ldid$ brew install ldid修改环境变量编辑用户的配置文件$ vim原创 2018-02-02 00:15:41 · 541 阅读 · 0 评论 -
(6)脱壳
加壳什么是加壳? 利用特殊的算法,对可执行文件的编码进行改变(比如压缩、加密),以达到保护程序代码的目的脱壳什么是脱壳? 摘掉壳程序,将未加密的可执行文件还原出来(有些人也称为“砸壳”)脱壳主要有2种方法:硬脱壳、动态脱壳iOS中的脱壳工具iOS中有很多好用的脱壳工具 Clutch:https://github.com/KJCracks/C原创 2018-02-02 00:14:46 · 438 阅读 · 0 评论 -
(5)初识Mach-O
APP从开发到安装到手机的过程1MJRefreshExample.app中的MJRefreshExample文件是iOS中的可执行文件,文件格式是Mach-OAPP从开发到安装到手机的过程2逆向APP的思路界面分析 Cycript、Reveal代码分析 对Mach-O文件的静态分析MachOView、class-dump、Hopper Disassem原创 2018-02-02 00:13:47 · 619 阅读 · 0 评论 -
iOS系统生成二维码
// 1. 创建一个二维码滤镜实例(CIFilter) CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; // 滤镜恢复默认设置 [filter setDefaults]; // 2. 给滤镜添加数据 NSString *string = @"594589850445580904原创 2017-03-27 15:59:34 · 403 阅读 · 0 评论 -
iOS动画-定时对UIView进行翻转和抖动
[NSTimer scheduledTimerWithTimeInterval:3.f repeats:YES block:^(NSTimer * _Nonnull timer) { CABasicAnimation* rotationAnimation = [CABasicAnimation animation];; rotationAnimatio原创 2016-12-22 17:08:59 · 500 阅读 · 0 评论 -
Swift学习-函数
import UIKit/* swift定义函数格式: 语义:将前面计算结果返回给-> 返回值 func 函数名称(参数列表) -> 返回值 { 执行代码 } *///没有返回值没有参数// 如果函数没有返回值,就写Void// 如果函数没有返回值,就写Void,还可以简写// 1、()代替Void// 2、可以省略 -> () ->Voidfunc say() -> Vo原创 2016-08-11 23:03:36 · 237 阅读 · 0 评论 -
Swift开发-代理
在iOS开发中经常会用到代理,Swift开发中的代理这样写:1、首先定义一个协议// swift中如何定义协议: 必须遵守NSObjectProtocolprotocol VisitorViewDelegate : NSObjectProtocol{ // 登录回调 func loginBtnWillClick() // 注册回调 func regiserBtnWi原创 2016-08-19 00:40:20 · 280 阅读 · 0 评论 -
Swift-单例
标准写法:// 在swift中,类方法是不允许定义静态变量的 static var once_t: dispatch_once_t = 0 static var instance: NetWorkTools? class func sharedNetWorkTools() -> NetWorkTools { dispatch_once(&once_t) {原创 2016-08-25 00:42:39 · 280 阅读 · 0 评论 -
简单的计步器实现
#import "ViewController.h"#import <CoreMotion/CoreMotion.h>@interface ViewController ()@property (nonatomic, strong) CMStepCounter *conter;@property (weak, nonatomic) IBOutlet UILabel *stepLabel;@end@原创 2016-08-10 21:08:38 · 3195 阅读 · 0 评论 -
UITextView实现占位文字
UITextField *textField默认的情况 1.只能显示一行文字 2.有占位文字UITextView *textView默认的情况 2.能显示任意行文字 2.没有占位文字文本输入控件,最终希望拥有的功能 1.能显示任意行文字 2.有占位文字最终的方案: 1.继承自UITextView 2.在UITextView能显示任意行文字的基础上,增加”有占位文字”的原创 2016-08-08 22:49:12 · 1007 阅读 · 0 评论 -
对UILabel添加UIMenuController扩展
一、UIMenuController认识 1、默认情况下,UITextView / UITextFiled / UIWebView 都有苹果自带的有UIMenuController功能二、对UILabel添加UIMenuController扩展1、新建一个SSCopyLabel,继承UIlabel,.m文件如下:#import "SSCopyLabel.h"@implementation原创 2016-08-02 15:28:26 · 596 阅读 · 0 评论 -
iOS 中 常用的第三方库
轮子图现在对于我们 iOS 开发来说,基本上说不可能不使用第三方轮子啦,毕竟没那么多时间,而且自己造的轮子往往想着成为上图中的最后一个,结果却成了上图中第二个或第一个啦,当然大公司另当别论。下面我从之前用过的第三方轮子和看到不错的轮子进行总结一下。基本流程使用的第三方轮子列表相关的轮子图片相关的轮子其他可能常用的轮子基本流程使用的第三方轮子基本流转载 2016-08-02 16:00:40 · 2010 阅读 · 0 评论 -
iOS提取字符串
1、判断是否有中文+ (BOOL)IsChinese:(NSString *)str { for(int i=0; i< [str length];i++){ int a = [str characterAtIndex:i]; if((a > 0x4e00 && a < 0x9fff) || ((a > 64 && a < 91) || (a > 96 &&原创 2016-08-02 09:57:40 · 535 阅读 · 0 评论 -
[iOS]Xcode中警告处理
强迫症的福利, 有的时候, 我们特别讨厌Xcode中的代码警告, 以下就是遇到各种警告的时候的处理方法:(后续会一直更新)1、产生警告的原因: 某些方法废弃了, 会产生警告! 样式: 处理方法: 在代码的头尾加上#pragma clang diagnostic push#pragma clang diagnostic ignored "-Wdeprecated-declarations" /转载 2016-07-08 12:31:40 · 374 阅读 · 0 评论 -
GCD与多线程编程
GCD与多线程编程官方文档是这么说的: Grand Central Dispatch (GCD) comprises language features, runtime libraries, and system enhancements that provide systemic, comprehensive improvements to the support for转载 2016-07-01 12:29:57 · 535 阅读 · 0 评论 -
NSCharacterSet 简单用法
NSCharacterSet 简单用法转载自: NSCharacterSet其实是许多字符或者数字或者符号的组合,在网络处理的时候会用到NSMutableCharacterSet *base = [NSMutableCharacterSet lowercaseLetterCharacterSet]; //字母 NSCharacterSet *decimalDigit = [NSCharacte转载 2016-05-17 20:24:50 · 402 阅读 · 0 评论