- 博客(52)
- 资源 (1)
- 收藏
- 关注
原创 Predicate
苹果官方的描述Predicates是在Cocoa中的一种查询格式,可以用于大量数据时候的查询操作,包含Core Data和 Spotlight中;通过我们过滤数据的方式是通过一个循环,在循环中建立过滤条件,然后对过滤的数据进行操作,或者增加到一个新的容器当中,例如新建一个Array;在iOS中有一种更加优雅的方式来实现,通过Predicate,建立一个模式,然后对数据进行模式匹配,筛选出符合条件的数据。
2023-01-29 14:36:57
352
原创 Typora+upic的配置
本机配置来多个上传方式,其中gitee是失败的,默认使用了gitee,切换到github下面即可;本人使用的是Mac book 的M1芯片电脑,为了方便写博客,整理了图片上传的方式;upic是一款上传图片的工具,主要为了帮助写博客上传工具使用的,方便上传图片;七牛的配置的局限性,如下,因为七牛服务的局限性;因为本机连接了代理,需要取消代理即可;github的上传就特别的简单。
2023-01-09 19:25:37
528
原创 iOS AudioQueue实现音频的录制和播放(附Demo)
#基于AudioQueue实现音频的录制和播放文章目录背景总览Audio Queue 架构AudioQueueBuffer数据结构创建`AudioQueueBuffer`释放 `AudioQueueBuffer`Buffer Queue 和EnqueuingAudio Queue Callback音频录制创建一个录音 AudioQueue 的示例音频播放播放流程说明通过AudioQueue来控制音频的播放Audio Queue 的控制和状态Audio Queue 运行状态的监控demo地址参考文献背景
2022-02-18 14:37:11
1393
原创 HTTP的三次握手和四次挥手
HTTP的三次握手和四次挥手学过网络的都知道,http的传输是基于TCP协议的,建立连接需要三次握手,结束连接需要四次挥手,那么具体过程是什么样子呢? 中间经历哪些状态呢?TCP报文的头结构概念说明:SYN: 同步字段,等待确认;ACK: 确认字段,建立连接后ACK=1;seq: 请求序号;ack: 确认序号,等于SYN发送的 seq+1;FIN:终止字段,FIN=1表示释放一个连接;1.三次握手;连接状态:CLOSED: 表示初始状态;LISEN:服务端的某个SOCKET处于监
2020-05-21 18:27:59
445
原创 iOS 封装一个Mutipart网络请求
文章目录什么是Mutipart网络请求什么条件下需要自己拼装mutipart网络请求基于AFNetwoking的mutipart网络请求代码示例代码示例#iOS 自己拼装Multipart网络请求什么是Mutipart网络请求mutipart网络请求是一种post网络请求,主要用来上传大文件,如图片、音视频数据等;什么条件下需要自己拼装mutipart网络请求一般的项目中我们的网络请求都...
2020-03-11 11:56:12
376
原创 UICollectionview使用装饰decorationView
自定collectionview的装饰视图先来看一下效果图图中树的部分就是通过装饰来实现的;要想实现图中树杈部分的UI,如果通过传统的方式很难实现,只能写死一部分UI来实现这样的效果,但是通过collectionview的decorationView就可以轻松的实现这种效果;先上代码步骤3:[self registerClass:[ShelfView class] forDecora...
2019-10-31 21:00:51
1031
原创 使用Audio Queue播放pcm流
#使用Audio Queue播放pcm流因为项目的原因,需要实现播放pcm流的播放器,对于iOS传统的播放器AvPlayer等音频播放器无法满足需求,这个时候需要使用更加底层播放器,Audio quue;介绍audio queue推荐官方文档:About Audio Queues使用音频队列需要先数显几个概念:Audio Queue: 音频队列是调度音频队列的主体,负责调度整个播放过程的逻...
2019-10-30 20:30:14
646
原创 音视频直播总结
采集 -> 处理 -> 编码 -> 封装 -> 推流 -> 分发采集: 视频 YUV音频:PCM处理:磨皮,美白,会涉及到人脸识别技术和皮肤识别技术;编码:压缩编码,根据前后帧的特点可以实现压缩;连续几个帧放在一起就形成了组GOP,将该组分为I/B/P,I表示为关键帧,B表示为双向参考帧,P表示为向前参考帧,如果没有I帧,B,P帧也是没法播放的,因为B,...
2019-06-12 14:55:01
5699
3
原创 PostMan设置全局变量
给postMan 设置全局变量1.通过{{}} 双大括号可以实现对变量的引用; 2.需要在请求的Test里面设置好要设置的全局变量:let json = JSON.parse(responseBody);//声明一个变量json,将JSON返回Body里面的值解析并给变量json tests["a"] = responseBody.has("0");//设置一个断言 pm.glob...
2018-08-23 11:14:14
1863
原创 iOS开发项目总结
webview开发过程中踩到的坑;1.webview关闭时关闭音频声音的问题; 一开始采取的时候采取@"about:blank"的方式关闭,发现在出现webview跳转后goback回来的时候加载之前的空白页,所以这个方法有局限性; 2.采用与JS交互的方法; 在页面关闭之前,直接调用JS关闭视频播放的方法,实现音频播放的关闭;音频播放控制的问题1.音频循环播放的问题; 通过监...
2018-07-17 20:02:31
1158
原创 Tableview自适应展示
设置UITableView自动计算高度设置tableview的样式- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath{ return 0.01;}- (CGFloat)tableView:(UITableView *)tabl...
2018-07-02 16:34:17
919
1
原创 iOS webview的截屏功能
iOS webview实现截屏的功能 项目的应用场景实现网页的截屏功能用于分享到微信图片,类似于分享证书等,代码如下- (UIImage *)createImageWithView:(UIView *)view{ CGSize s = view.bounds.size; //第一个参数表示区域大小。第二个参数表示是否是非透明的。如果需要显示...
2018-06-27 10:24:40
1529
原创 iPhone无线调试
无线调试通过无线调试可以避免频繁的插拔线可以节省手机的电池,毕竟手机电池一直连接电脑是伤害电池的,对于用自己手机调试的同学还是值得注意的那么怎么进行调试呢?color:orange> 先通过有线的形式让手机和mac连接选择show as run destination 这个时候拔掉数据线选择左侧的设备,右键选择connect via IP address输入手机的ip...
2018-06-07 18:07:58
1230
原创 Xode执行脚本打包
Xcode命令行和脚本关联执行打包 执行以下命令即可 sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
2018-06-07 18:03:56
349
原创 iOS Native录音+web交互
主要流程:1.创建音频路径,位置放在document文件夹下; 2.通过AVAudioseesion来设置录音时的背景声音,需要设置背景声音为静音,这样方便录音; 3.设置录音时候需要的一些参数,包含通道,采样率,音频质量,音频格式等; 4.控制录音;包含开始录音和结束录音的动作; 5.将录音生成的文件转化成Mp3的文件,Mp3转化相当于将之前的音频再次做一次采样,生成的Mp3文件会更...
2018-05-17 16:53:42
1591
原创 LaunchScreen.storyboard 启动页设置图片不显示 启动页白屏
问题描述:修改完launchScreen的启动图之后发现加载还是之前的图片? 问题解决思路:以为是缓存的问题,通过重启Xcode,删除掉APP重新安装,cleanXcode 发现 It don’t work; 那怎么办呢? 通过在网上搜索找到了解决方法: 1.修改启动图的图片名称; 2.将图片的目录放在文件的目录下面(如果放在Assets.xcassets中需要移动)。评估:这个应该...
2018-02-28 18:04:15
11581
原创 iOS中检测当前设备的旋转方向(关闭屏幕旋转)
首先添加CoreMotion.frameWork 框架在代码中配置基本的信息#import <CoreMotion/CoreMotion.h>// 创始化状态,添加Queue来检测状态- (void)startMotionManager{ if (_cmotionManager == nil) { _cmotionManager = [[CMMotionManager al
2017-12-19 21:41:33
3086
原创 iOS中webview加载pdf文件出现黑屏的问题
项目开发的过程中,当加载完成一个pdf文件的过程后,常常会出现黑屏的情况; 原因是webview调用-webViewDidFinishLoad: 后负责渲染pdf文件的UIWebPDFView还没有加载完成,所有想除掉黑色背景可以在-(void)viewDidLayoutSubviews 中或者- (void)webView:(WKWebView *)webView didFinishNavig
2017-11-30 15:53:27
3823
转载 makeObjectsPerformSelector 方法的用法
NSArray 类定义的方法makeObjectsPerformSelector:@select(aMethod)简介:让数组中的每个元素 都调用 aMethod makeObjectsPerformSelector:@select(aMethod) withObject:oneObject简介:让数组中的每个元素 都调用 aMethod 并把 with
2017-10-16 10:40:41
403
原创 UILable通过drawTextInRect修改文字间距
重写UIlable的drawTextInRect Method,然后设置UIEdgeInsets。- (void)drawTextInRect:(CGRect)rect{ UIEdgeInsets insets = {0, 5, 0, 15}; [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];}
2017-08-18 14:34:44
2166
原创 iOS学习资料
WWDC视频: https://developer.apple.com/videos/raywenderlich: https://www.raywenderlich.com/category/ios
2017-08-16 16:57:21
660
原创 自定义UICollectionViewlayout
在iOS开发中,UICollectionView的作用主要的作用是用来展示格子样式的数据,相比于TableView,collectionView的布局更加的灵活,它可以通过自定义UICollectionViewLayout,来实现我们需要的UI效果。在iOS开发中,UICollectionView的作用主要的作用是用来展示格子样式的数据,相比于TableView,collectionView的布局更
2017-08-14 18:10:11
682
原创 iOS应用内跳转到系统设置页面
在iOS开发中,有时会有跳转系统设置界面的需求,例如提示用户打开蓝牙或者WIFI,提醒用户打开推送或者位置权限等。设置跳转有三种方式,每一种的使用场景都不同。 并且你在跳转到系统中自己应用下面设置的时候,你的应用要提前至少申请了某一个权限,如通知,定位等。否则,会引起崩溃。方式一:prefs:root=某项服务方式二:prefs:root=bundleID方式三: UIApplicationOpen
2017-08-03 12:24:27
813
翻译 Alamofire的使用教程
环境:Alamofire 4, Xcode 8.2, iOS 10, and Swift 3. Alamofire是一个基于HTTP的网络请求库,适用于iOS和OSX,针对apple的基本网络请求库作了封装,简化网络请求的复杂逻辑。 Alamofire提供了request/response方法,JSON参数形式,序列化功能,以及authentication等许多特性。在本篇文章中,你可以学到通过
2017-07-27 16:25:17
2787
原创 Swift加载带导航条的WebView
Webview是iOS开发中常用的控件,加载webview的时候常常需要一段等待时间,特别是网络条件差的时候,这时候加载一个带导航的webview能很好的提高用户体验,下面的例子演示使用WKWebview自定义一个导航条加载一个webView,WKWebview是iOS8时推出的,相比以前的UIWebview控制的更加精细,功能也更多,支持更多的HTML5特性,支持动态加载JS代码,感兴趣的可以看这
2017-07-25 18:17:32
1276
原创 ScrolView的Autolayout约束
在使用autoLayout的时候,针对一般的view只需要添加四个位置信息便可以确定一个view的位置了;但是因为scrolView本身控件的特殊性,我们设置的约束只是控制了scrollView的Frame。如果scrollView想要滑动,我们还要设置scrollView的ContentSize,在使用代码的时候的时候我们可以通过代码来实现,非常的简单;- (void)viewDidLoad {
2017-07-24 17:03:35
721
原创 NSTimer的使用(精简)
简述:NSTimer是iOS系统的计时控件,下面介绍NSTimer的使用,简单详细: 1. Timer的开启:+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)interval repeats:(BOOL)repeats block:(void (^)(NSTimer *timer))block 创建一个timer对象,
2017-07-14 14:57:17
481
转载 UML类图与类的关系详解
在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition)。下面我们结合实例理解这些关系。 基本概念类图(Class Diagram): 类图是面向对象系统建模中最常用和最重要
2017-06-15 16:54:39
568
翻译 设计模式——算法封装
模板方法模板方法模式:定义一个操作中算法的架构,而将一些步骤延迟到子类中。模板方法使子类可以重定义算法的某些特定步骤而不改变该算法的结构;使用场景需要一次性实现算法的不变部分,可将可变的行为留给子类来实现;子类的共同行为应该被提取出来放在公共类中,以避免代码重复。 现有代码的差别应该被分离为新的操作,然后用一个调用这些新操作的模版方法来替代这些不同的代码; 3.需要控制子类的扩展。可以定义一
2017-05-25 18:36:35
3234
翻译 设计模式——行为扩展
访问者访问者模式:表示一个作用于某对象结构中各元素的操作。它让我们可以在不改变各元素的前提下定义作用于这些元素的新操作;使用场景1.一个复杂的对象结构包含很多其它对象,它们有不同的接口,但是相对这些对象实施一些依赖于其具体类型的操作; 2.需要对一个组合结构中的对象进行许多不相关的操作,但是不想让这些操作“污染”这些对象的类。 3.定义复杂结构的类很少做修改,但经常需要向其添加新的操作;装饰装饰
2017-05-25 18:35:48
696
翻译 设计模式 ——抽象集合
组合组合模式:将对象组合成树形结构以表示“整体-部分”的层次结构。组合使得用户对单个对象和组合对象的使用具有一致性。使用场景想获得对象抽象的树形表示(部分-整体层次结构);想让客户端统一处理组合结构中的所有对象;迭代器迭代器:提供一种方法顺序访问一个聚合对象中各个元素,而不需要暴露该对象的内部表示;使用场景1.需要访问组合对象的内容,而又不暴露内部表示; 2.需要通过多种方式遍历组合对象;
2017-05-25 18:34:57
570
翻译 设计模式 ——接口适配
适配器类适配器 类适配器(adapter)是通过继承来适配两个接口;通过继承一个协议,和一个实际类(adaptee),通过重载中的协议方法,调用超类(adaptee)中的方法(specificRequest)发送【super specificRequest】方法; 只有当是协议而不是类时,类适配器才能用OC来实现;对象适配器 对象适配器(adapter)继承一个协议,与类适配器不同的是ad
2017-05-25 18:33:57
1252
原创 svn is already locked解决方案
在出错文件夹下,找到Action -> cleanup working copy locks on.即可
2017-05-25 09:29:20
575
原创 OC与Swift文件的混编
1. OC调用Swift类;a. 在工程的 Build Settings 中把 defines module 设为 YES. b.引入swift头文件,格式“projectName-filename.swift”(这个文件是系统创建的);2.Swift调用OC类;Swift代码引用OC,需依靠 Objective-C bridging header 将相关文件暴露给Swift。在Objecti
2017-05-23 10:33:31
518
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人