
iOS
Limo._
Less is More
展开
-
iOS 封装一个Mutipart网络请求
文章目录什么是Mutipart网络请求什么条件下需要自己拼装mutipart网络请求基于AFNetwoking的mutipart网络请求代码示例代码示例#iOS 自己拼装Multipart网络请求什么是Mutipart网络请求mutipart网络请求是一种post网络请求,主要用来上传大文件,如图片、音视频数据等;什么条件下需要自己拼装mutipart网络请求一般的项目中我们的网络请求都...原创 2020-03-11 11:56:12 · 383 阅读 · 0 评论 -
UICollectionview使用装饰decorationView
自定collectionview的装饰视图先来看一下效果图图中树的部分就是通过装饰来实现的;要想实现图中树杈部分的UI,如果通过传统的方式很难实现,只能写死一部分UI来实现这样的效果,但是通过collectionview的decorationView就可以轻松的实现这种效果;先上代码步骤3:[self registerClass:[ShelfView class] forDecora...原创 2019-10-31 21:00:51 · 1033 阅读 · 0 评论 -
使用Audio Queue播放pcm流
#使用Audio Queue播放pcm流因为项目的原因,需要实现播放pcm流的播放器,对于iOS传统的播放器AvPlayer等音频播放器无法满足需求,这个时候需要使用更加底层播放器,Audio quue;介绍audio queue推荐官方文档:About Audio Queues使用音频队列需要先数显几个概念:Audio Queue: 音频队列是调度音频队列的主体,负责调度整个播放过程的逻...原创 2019-10-30 20:30:14 · 662 阅读 · 0 评论 -
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 · 2799 阅读 · 0 评论 -
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 · 493 阅读 · 0 评论 -
makeObjectsPerformSelector 方法的用法
NSArray 类定义的方法makeObjectsPerformSelector:@select(aMethod)简介:让数组中的每个元素 都调用 aMethod makeObjectsPerformSelector:@select(aMethod) withObject:oneObject简介:让数组中的每个元素 都调用 aMethod 并把 with转载 2017-10-16 10:40:41 · 408 阅读 · 0 评论 -
iOS中webview加载pdf文件出现黑屏的问题
项目开发的过程中,当加载完成一个pdf文件的过程后,常常会出现黑屏的情况; 原因是webview调用-webViewDidFinishLoad: 后负责渲染pdf文件的UIWebPDFView还没有加载完成,所有想除掉黑色背景可以在-(void)viewDidLayoutSubviews 中或者- (void)webView:(WKWebView *)webView didFinishNavig原创 2017-11-30 15:53:27 · 3838 阅读 · 0 评论 -
iOS中检测当前设备的旋转方向(关闭屏幕旋转)
首先添加CoreMotion.frameWork 框架在代码中配置基本的信息#import <CoreMotion/CoreMotion.h>// 创始化状态,添加Queue来检测状态- (void)startMotionManager{ if (_cmotionManager == nil) { _cmotionManager = [[CMMotionManager al原创 2017-12-19 21:41:33 · 3107 阅读 · 0 评论 -
LaunchScreen.storyboard 启动页设置图片不显示 启动页白屏
问题描述:修改完launchScreen的启动图之后发现加载还是之前的图片? 问题解决思路:以为是缓存的问题,通过重启Xcode,删除掉APP重新安装,cleanXcode 发现 It don’t work; 那怎么办呢? 通过在网上搜索找到了解决方法: 1.修改启动图的图片名称; 2.将图片的目录放在文件的目录下面(如果放在Assets.xcassets中需要移动)。评估:这个应该...原创 2018-02-28 18:04:15 · 11602 阅读 · 0 评论 -
iOS Native录音+web交互
主要流程:1.创建音频路径,位置放在document文件夹下; 2.通过AVAudioseesion来设置录音时的背景声音,需要设置背景声音为静音,这样方便录音; 3.设置录音时候需要的一些参数,包含通道,采样率,音频质量,音频格式等; 4.控制录音;包含开始录音和结束录音的动作; 5.将录音生成的文件转化成Mp3的文件,Mp3转化相当于将之前的音频再次做一次采样,生成的Mp3文件会更...原创 2018-05-17 16:53:42 · 1608 阅读 · 0 评论 -
Xode执行脚本打包
Xcode命令行和脚本关联执行打包 执行以下命令即可 sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer原创 2018-06-07 18:03:56 · 350 阅读 · 0 评论 -
iPhone无线调试
无线调试通过无线调试可以避免频繁的插拔线可以节省手机的电池,毕竟手机电池一直连接电脑是伤害电池的,对于用自己手机调试的同学还是值得注意的那么怎么进行调试呢?color:orange> 先通过有线的形式让手机和mac连接选择show as run destination 这个时候拔掉数据线选择左侧的设备,右键选择connect via IP address输入手机的ip...原创 2018-06-07 18:07:58 · 1249 阅读 · 0 评论 -
iOS webview的截屏功能
iOS webview实现截屏的功能 项目的应用场景实现网页的截屏功能用于分享到微信图片,类似于分享证书等,代码如下- (UIImage *)createImageWithView:(UIView *)view{ CGSize s = view.bounds.size; //第一个参数表示区域大小。第二个参数表示是否是非透明的。如果需要显示...原创 2018-06-27 10:24:40 · 1536 阅读 · 0 评论 -
Tableview自适应展示
设置UITableView自动计算高度设置tableview的样式- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath{ return 0.01;}- (CGFloat)tableView:(UITableView *)tabl...原创 2018-07-02 16:34:17 · 930 阅读 · 1 评论 -
iOS开发项目总结
webview开发过程中踩到的坑;1.webview关闭时关闭音频声音的问题; 一开始采取的时候采取@"about:blank"的方式关闭,发现在出现webview跳转后goback回来的时候加载之前的空白页,所以这个方法有局限性; 2.采用与JS交互的方法; 在页面关闭之前,直接调用JS关闭视频播放的方法,实现音频播放的关闭;音频播放控制的问题1.音频循环播放的问题; 通过监...原创 2018-07-17 20:02:31 · 1165 阅读 · 0 评论 -
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 · 2177 阅读 · 0 评论 -
iOS应用内跳转到系统设置页面
在iOS开发中,有时会有跳转系统设置界面的需求,例如提示用户打开蓝牙或者WIFI,提醒用户打开推送或者位置权限等。设置跳转有三种方式,每一种的使用场景都不同。 并且你在跳转到系统中自己应用下面设置的时候,你的应用要提前至少申请了某一个权限,如通知,定位等。否则,会引起崩溃。方式一:prefs:root=某项服务方式二:prefs:root=bundleID方式三: UIApplicationOpen原创 2017-08-03 12:24:27 · 834 阅读 · 0 评论 -
iOS启动屏后再加个闪屏的方法
自定义图片加载,延时时间,以及动画收回时间。转载 2016-05-11 12:00:14 · 6269 阅读 · 0 评论 -
NSURLProtocol的使用
在实际工作的项目中,有时会需要在webview的请求中添加认证,比如iOS中UIWebview添加headers认证请求;一般的情况下我们可以在请求的时候直接添加headers,创建 NSMutableURLRequest 然后添加header [request setValue:@"header" forHTTPHeaderField: @"key"],这样可以最简单的添加header,用户在第原创 2016-07-15 16:27:26 · 726 阅读 · 0 评论 -
Xcode8打包APP上传到APPStore遇到的问题
1.ERROR ITMS-90096: “Your binary is not optimized for iPhone 5 - New iPhone apps and app updates submitted must support the 4-inch display… 这个问题的提示是说在打包APP的时候没有添加iPhone 5 的4寸启动图,在网上找了许多资料,大多数是关于启动图设置的原创 2016-10-10 17:40:58 · 3515 阅读 · 1 评论 -
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 · 520 阅读 · 0 评论 -
iOS使用TestFlight进行Beta测试
Apple 提供TestFlight的方式帮助开发人员实现快捷的测试流程,现阶段已经集成到itunesConnect中;TestFlight分为两种类型: 1. 内部测试:开发人员可最多邀请25人参与测试,不需要提交给apple审核; 2. 外部测试:开发人员可最多邀请2000人参与测试,需要提交给apple审核,审核周期一般为几个小时; testFlight使用好处: 可以更快的的提供原创 2017-04-27 13:54:42 · 1077 阅读 · 0 评论 -
Apple Mach-O Linker Error-iOS
项目开发的过程中添加新的文件时常常会出现这样的错误“Apple Mach-O Linker Error”,“clang: error: linker command failed with exit code 1 (use -v to see invocation)”这样的错误提示。 这是因为错误的引用导致的,解决的方法有以下方式: 1. 在工作左边导航栏Target–>Build Phase原创 2017-05-05 11:20:27 · 2000 阅读 · 0 评论 -
iOS设计模式
总论:最近看完iOS设计模式的书,看书的过程中积累了一些心得,趁着今天有时间就在这里写出来做分享:做一件事情久了,往往就会有做事的固定模式,模式有好有坏,好的模式就会让我们做事变的高效,事半功倍;做iOS开发也一样,工欲善其事,必先利其器;该书按照分类将各部分按章节讲解,同时有各个模式的demo和一个主程序;原创 2016-01-19 19:23:41 · 470 阅读 · 0 评论 -
设计模式——算法封装
模板方法模板方法模式:定义一个操作中算法的架构,而将一些步骤延迟到子类中。模板方法使子类可以重定义算法的某些特定步骤而不改变该算法的结构;使用场景需要一次性实现算法的不变部分,可将可变的行为留给子类来实现;子类的共同行为应该被提取出来放在公共类中,以避免代码重复。 现有代码的差别应该被分离为新的操作,然后用一个调用这些新操作的模版方法来替代这些不同的代码; 3.需要控制子类的扩展。可以定义一翻译 2017-05-25 18:36:35 · 3248 阅读 · 0 评论 -
设计模式——行为扩展
访问者访问者模式:表示一个作用于某对象结构中各元素的操作。它让我们可以在不改变各元素的前提下定义作用于这些元素的新操作;使用场景1.一个复杂的对象结构包含很多其它对象,它们有不同的接口,但是相对这些对象实施一些依赖于其具体类型的操作; 2.需要对一个组合结构中的对象进行许多不相关的操作,但是不想让这些操作“污染”这些对象的类。 3.定义复杂结构的类很少做修改,但经常需要向其添加新的操作;装饰装饰翻译 2017-05-25 18:35:48 · 709 阅读 · 0 评论 -
设计模式 ——抽象集合
组合组合模式:将对象组合成树形结构以表示“整体-部分”的层次结构。组合使得用户对单个对象和组合对象的使用具有一致性。使用场景想获得对象抽象的树形表示(部分-整体层次结构);想让客户端统一处理组合结构中的所有对象;迭代器迭代器:提供一种方法顺序访问一个聚合对象中各个元素,而不需要暴露该对象的内部表示;使用场景1.需要访问组合对象的内容,而又不暴露内部表示; 2.需要通过多种方式遍历组合对象;翻译 2017-05-25 18:34:57 · 572 阅读 · 0 评论 -
设计模式 ——接口适配
适配器类适配器 类适配器(adapter)是通过继承来适配两个接口;通过继承一个协议,和一个实际类(adaptee),通过重载中的协议方法,调用超类(adaptee)中的方法(specificRequest)发送【super specificRequest】方法; 只有当是协议而不是类时,类适配器才能用OC来实现;对象适配器 对象适配器(adapter)继承一个协议,与类适配器不同的是ad翻译 2017-05-25 18:33:57 · 1258 阅读 · 0 评论 -
LLDB的简单使用
iOS5后苹果公司在xcode中集成了LLDB取代了之前的GDB.有很多快捷键,支持别名设置,并且用户可以通过Python进行扩展。 学习资料:(a).查看apple developer视频,407 WWDC 2013: Debugging with Xcode. 413 WWDC 2013: Advanced Debugging with LLDB. (b.) 查看apple develope原创 2017-05-10 16:43:11 · 477 阅读 · 0 评论 -
AVPlayerViewController支持横屏设置
针对项目中出现视频播放需求,简单的视频播放功能,可以使用AVPlayerViewController,在iOS9后废弃了之前的MPMoviePlayer,现在统一使用AVKit下的AVPlayerViewController; 作为第一次使用AVPlayerViewController,总结一些遇到的坑,分享出去; 1.首先是全屏播放问题,由于界面只支持portrait模式,可是看视频是需要La原创 2016-10-24 17:48:28 · 9543 阅读 · 0 评论 -
ScrolView的Autolayout约束
在使用autoLayout的时候,针对一般的view只需要添加四个位置信息便可以确定一个view的位置了;但是因为scrolView本身控件的特殊性,我们设置的约束只是控制了scrollView的Frame。如果scrollView想要滑动,我们还要设置scrollView的ContentSize,在使用代码的时候的时候我们可以通过代码来实现,非常的简单;- (void)viewDidLoad {原创 2017-07-24 17:03:35 · 728 阅读 · 0 评论 -
自定义UICollectionViewlayout
在iOS开发中,UICollectionView的作用主要的作用是用来展示格子样式的数据,相比于TableView,collectionView的布局更加的灵活,它可以通过自定义UICollectionViewLayout,来实现我们需要的UI效果。在iOS开发中,UICollectionView的作用主要的作用是用来展示格子样式的数据,相比于TableView,collectionView的布局更原创 2017-08-14 18:10:11 · 685 阅读 · 0 评论 -
iOS中tableview通过点击实现Cell的伸缩
好久没写bolg了,今天有时间把之前项目中用到的一些小的技术点微微的整理一下,算是总结学习�� 直入正题:首先创建好自己的tableview控件; 标记cell是否打开: _isOpen; 标记当前选中Cell的位置信息: _selectIndexPath; 其实tableviewcell的伸缩只需要简单的两步; 第一:在UITableViewdelegate的didSelectRowAt原创 2015-08-14 14:45:20 · 3103 阅读 · 0 评论