![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS技术组
iOS开发过程中的技术积累
小飞work
ios、flutter、hmos、processing
展开
-
SCNView如何灵活使用DAE文件
上一篇文章讲述了如何切换相机位置的问题,今天在之前的基础上讲述下自定义移动,手动转动以及点击模型中的子模型等操作。直接讲述代码以及流程问题。首先我们需要将DAE文件拖到xcode中,还是放到scene.scnassets文件夹中。同时导入的还有iamges资源文件。原创 2017-01-23 17:15:21 · 5530 阅读 · 6 评论 -
SCNView切换相机视角
前一篇文章讲述了几个刚接触SceneKit的三个小问题,今天准备稍微深刻一点。在3D模型中,实际的项目中并不会像demo中的那样只有一个模型(飞机模型),如果有多个模型组合成的一个大模型,我们如何完成?原创 2017-01-04 17:03:08 · 6024 阅读 · 0 评论 -
IOS AR技术开发
这几天了解了下AR的技术开发,关于AR网上也有一些指导博客,我这里由于也是刚开始接触AR,所以不加以多说,只是总一个个人总结。关于AR我第一次感觉有意思是QQ在2017年城市内抢红包感受到的。当时觉得这样的技术应该会普及起来,但是没想到原来AR技术都开始好几年了,只是最近才火起来。 关于AR网上很少有IOS直接开发的,国内的平台有亮风台、EasyAR等。我就是在这两个平台上学习的,Q原创 2017-04-26 14:40:23 · 3394 阅读 · 0 评论 -
SceneKit一个加载3D模型的神奇框架
由于我们的项目需要使用3D模型,将3D模型展示到客户端,如果用OpenGL太麻烦,原创 2016-12-23 10:46:36 · 7989 阅读 · 2 评论 -
系统自带的3D模型控件
先自定义SCNView和SCNScene用来作为模型展示的view和场景。@property (nonatomic,strong) SCNView *QFSceneView;@property (nonatomic,strong) SCNScene *QFSenePlace;//声明3D场景 self.QFSceneView = [[SCNView alloc]init];原创 2018-01-24 16:00:19 · 1741 阅读 · 2 评论 -
NSURLSession如何上传图片的同时带有参数
好久没有写过博客了,之前一直在小公司做搬运工。现在幡然醒悟开始做些研究性的东西吧。nsurlsession是AFNetworking3.0优化以后才引起我的注意的。这次从头写起,就是把请求这块从零开始熟悉熟悉。好了,开始说说我写的思路。之前都是用AFHTTPRequestOperationManager做请求的接口封装,今天封装的时候也是仿照它做的NSURLSession。既然是参数和图片同一原创 2016-04-21 20:24:41 · 2841 阅读 · 5 评论 -
Ipad项目初涉UISplitViewController
新公司,新气象。沉寂了一个月,开始做ipad项目,原创 2016-12-23 10:14:21 · 713 阅读 · 0 评论 -
异步线程操作
1.异步线程的方便之处就是在于可以同时处理多个任务,并且相互不会影响。最经典的案例就是网络请求和界面的卡顿之间的关系。其次还有很多读写数据之类的耗时操作,这些时候如果用异步线程处理就会达到界面流畅的效果。 2.今天写网络请求的封装的时候遇到了一个问题就是提示框开启和关闭竟然在数据返回后同时弹出和关闭。这样的效果显示不是我所想要的,而这些就是同步处理的结果。 3.其实不管是AFNetworking原创 2016-04-23 18:58:56 · 731 阅读 · 0 评论 -
后台定位
刚刚做一个用于后台定位的demo,在网上搜索了很多代码都说ios支持在后台的三种包括音乐、电话、还有定位起初在模拟器中运行代码,然后退出到后台后代码也正常运行,每隔一秒都会打印一次经纬度,可是我弄到真机上后,发现出问题了,进入后台后代码执行一次打印,之后就没有反应了。好了,废话不多说,上代码首先需要配置环境,这个网上很多,也都很对,我用的是Xcode5.0版本的,有一种更简单的方法就是原创 2013-12-06 15:48:38 · 1092 阅读 · 0 评论 -
NSURLSession如何取消请求
nsurlsession的基本用法之取消任务回调原创 2016-04-23 10:16:14 · 5105 阅读 · 0 评论 -
上传图片
首先导入类库XOpHttp.h和XOpHttp.m文件在你需要上传的页面的.h文件里导入#import "XOpHttp.h"并引入协议OpHttpDelegate然后在你需要上传的页面的.m文件里声明一个对象XOpHttp*xopVC=[[XOpHttp alloc]init];实现委托xopVC.delegate=self;httpVC.loadView=self.view原创 2013-09-13 16:40:11 · 535 阅读 · 0 评论 -
仿微信摇一摇
自定义一个Animation类继承UIWindow原创 2013-09-13 17:24:07 · 964 阅读 · 0 评论 -
自动生成module
除了运用runtime网上还有很多类库,都封装好了,不过都是在已有的module的基础上给module赋值的效果。而不是项目中没有module类,从零开始新建module。其实这样看来也就是少了一个赋值的麻烦事。但是能省点劲就省点。毕竟重复劳动不是我们的追求。 .今天在网上看到的很多类库包括-MJExtension和-Mantle。这两个库都是封装的非常好的,在已有module和属性的基础上,自动原创 2016-07-01 16:00:09 · 1361 阅读 · 0 评论 -
RunTime初涉(动态添加module)
1. runtime这个东西很多人都听说过,最近也比较火,面试的时候被问,做项目的时候对于特殊的需求也是很有用的一个东西。一直在想学习runtime正好趁现在新的项目在设计的阶段学习下。今天就先讲讲如何生成动态的module2. 首先还是给一个数据源,既然是module那么肯定需要网络请求下来的数据去解析生成这个东西。而这种运行时的不确定性正是runtime的特性。我先定义一个数据源nsdic原创 2016-06-30 14:13:54 · 830 阅读 · 0 评论 -
placeholer字体颜色修改
之前接触过KVO和KVC但是没有深入的了解过,今天开始自己慢慢接触KVO,KVC以及Runtime。感觉这些东西应该是OC的灵魂级代码吧。今天先用Placeholder做个开端。由于placeholder这个东西ios自带属性没有设置,所以才需要设置一些特殊的方法,之前都是给textfiled设置一个背景lable什么的,感觉太low了。接触过KVC之后才会明白,一句代码的事。[_ti原创 2016-06-20 11:20:18 · 1573 阅读 · 0 评论 -
runtime获取属性列表,修改属性值,添加并修改私有方法的调用
用了两天好好的研究了一下runtime,之前初涉runtime。懵懵懂懂的了解runtime的强大,但是如何的强大,只是在demo中引用MJExtension的时候自动生成model,了解了一些。 经过一天半的研究,首先温习了之前的获取属性列表。今天想说的具体功能如题所述。主要涉及的就是获取并修改属性。添加并修改私有方法。好了,首先说一下如何获取属性值。如果需要获取某个属性,我们最先需要知道你想获原创 2017-03-24 17:15:59 · 3127 阅读 · 0 评论 -
初涉多线程
原文:http://blog.sina.com.cn/s/blog_7b9d64af0101cajz.html任何一个 iOS 应用程序都是由一个或者多个线程构成的。无论你是否显示的使用了多线程编程技术,至少有 1 个 线程被创建。该线程叫做”main UI 线程”,被附加到主事件处理循环中(main run loop)。多线程就是为了提高引用程转载 2013-12-05 15:22:57 · 693 阅读 · 0 评论 -
适配iOS7开发(全面)
iOS7可以说是苹果一次革命性的变化,这样做为一个开发者需要做的事也不少。首先苹果的view布局有所变化,现在view默认是全屏模式,而所有的bar(navigation bar, tool bar, search bars 与scope bars都是半透明),status bar则是全透明。有了这样的改变,写代码的时候就有我们折腾的了。 本文所说的适配是指:用xcode5+iOS7sdk编译的程转载 2013-12-16 16:43:54 · 951 阅读 · 0 评论 -
绘图+缩放
之前写过一篇博客,专门讲述了一下如何绘图采用calayer画多边形,这个例子是简单的描述如何绘画出需要的layer层。下面提出一个新的需求,就是如何绘画出可以缩放的图。这个需求在View上是很难实现的,之前一直在考虑是不是要根据缩放级别计算我们锚点的新位置,因为缩放以后像素点的坐标是会变化的,之前也有人曾经闷头向这个方向专研了很久,可是我们有很easy的方式,干嘛要这么刻板呢?例如,我们需要汇出美团原创 2016-11-10 17:49:12 · 1222 阅读 · 0 评论 -
icon和default图标尺寸整理
iOS App图标和启动画面尺寸 注意:iOS所有图标的圆角效果由系统生成,给到的图标本身不能是圆角的。桌面图标 (app icon) for iPhone6 plus(@3x) : 180 x 180 for iPhone 6/5s/5/4s/4(@2x) : 120 x 120系统搜索框图标 (Spotlight search results icon) for iPhone6 pl原创 2016-08-10 16:22:57 · 1835 阅读 · 0 评论 -
穿透图片响应下层image事件
在做绚丽的界面的时候经常会用到不规则的图片,而我们美工给的图片一般都是方形的图片,在不规则的图形背后还有透明的部分。然而如果我们都使用整体的图片的话,很多图片就会出现交叉的部分,再比如我们如果给每一个图片添加一个点击事件的话上面的图片就会截取下面图片的事件。这样就给我们带来很大的困扰。如果我们要解决这个问题就需要我们清晰的了解事件的发生和传递是怎么一个流程。为什么我们点击一个按钮,只有这个按钮会触发原创 2016-07-05 17:15:56 · 2171 阅读 · 0 评论 -
CALayer画多边形柱体
之前做过可以使用Calyer去绘图,这次使用Calyer直接绘出3D立体的柱状体; 整体思路如下:首先初始化一个mainalyer作为主layer,然后在mainlayer上面添加柱状体的一个一个的界面。由于柱状体也是规则几何体,所以我们使用一个界面,通过旋转可以得到多边体。最后得到的mainlyer也可以添加手势,或者动画等。原创 2017-03-16 17:09:30 · 866 阅读 · 0 评论 -
CALayer绘制折线图
calyer现在逐渐熟练,折线图的绘制有好几种,最常见的是CGContextRef和CALayer。CGContextRef跟CALayer流程差不多,今天就简单把折线图的流程总结下。第一步:画出坐标轴(没有箭头)。效果图如下: -(void)drawAxes{ //起点 CGPoint startP = CGPointMake(20, 80); //坐标轴的拐点原创 2017-05-03 14:25:40 · 1001 阅读 · 0 评论 -
采用calyer画多边形
一直想用calyer做点什么东西,昨天有空探究了下calyer这个东西,如果做动画在calyer层上需要增加新的layer跟uiview addsubview有点类似。但是动画的显示还是有不同之处的。下面上代码显示的结果是一个正五边形 //绘画一个多边形(五边形) CGFloat x0 = 160.0f; CGFloat y0 = 200.0f; CGFloat x原创 2016-04-28 20:25:15 · 835 阅读 · 0 评论 -
裁剪图片(自定义裁剪范围)
网上现在有很多的图片剪切和从图片库中取出图片并截取的demo,但是大部分都是固定的大小,而且我们系统本来就带可编辑的图片裁剪功能。不过那个是正方形的,并不适用于我们多变的需求。 1.做裁剪图片需要先放一个父view,然后再在上面放原始图片imageview最后还需要一个裁剪图片的区域,为了防止用view会遮盖屏幕,到时候想滑动图片,缩放图片的时候就会遇到麻烦,所以需要用layer,就是之前博客提到原创 2016-06-04 12:43:47 · 3602 阅读 · 0 评论 -
gif动图如何裁剪出需要的frame
在如今的项目中纯展示类的项目中如果没有做支持gif的,恐怕连一个demo都不算,更别说做成一个项目了。现在对很多类库都有成熟的资源,最为常见的sdwebimage都有支持gif的展示问题。可是千变万化的需求不是有限的资源库所能够解决的,例如我们今天的要求,sdwebimage虽然可以展示,但是需要剪切固定frame就不是简单的一句代码可以解决的了。要做成gif的动图展示需要将动图下载下来,然后将动图原创 2016-08-08 14:39:00 · 3797 阅读 · 0 评论 -
利用UIDynamicAnimator做弹珠弹跳小游戏
本来想多了解了解`CMMotionManager`手机的陀螺仪的,并且用陀螺仪做了一个类似于手机的桌面的动态桌面,其实就是用陀螺仪的重力变化将图片位置稍微移动移动即可。原创 2017-12-04 16:42:32 · 890 阅读 · 0 评论 -
__typeof在Xcode7中的使用
前段时间做的时候就遇到了这个问题,今天把它记录下来。就是之前的代码明明没有问题可是应用到xcode7.3和ios9.3以后就出现了错误提示。 如下代码:这个是类库中的一段代码,在之前是没有问题的,但是用到新的环境中竟然报错 __weak typeof(self) weakSelf = self; _FDViewControllerWillAppearInjectBlock block原创 2016-05-07 18:44:26 · 1019 阅读 · 0 评论 -
Mac后台nsurlsessiond偷走流量
公司网速一向不好,今天公司的运维看了下实时网速发现我的mac一直在下载流量,可是我的程序都关闭了还是走。最后打开mac的活动监视器才发现nsurlsessiond和storedownloadd这两个后台运行的程序一直在偷流量!/bin/shlaunchctl unload /System/Library/LaunchDaemons/com.apple.nsurlstoraged.plist lau原创 2016-10-27 10:39:11 · 24345 阅读 · 0 评论 -
viewDidUnload和dealloc的区别
viewDidUnload 这个只在内存不足时执行,而且是对所有非当前显示的controller执行。你可以通过模拟器执行:硬件》模拟内存警告 来触发。当己经执行 viewDidUnload的controller重新显示时,会重新执行viewDidLoad。比如A push B》引发内存警告(A自动执行viewDidUnload)》pop B(这时A重新执行 viewD原创 2013-12-03 15:04:42 · 775 阅读 · 0 评论 -
copy,assign,strong,retain,weak,readonly,nonatomic的区别
copy与retain:1、copy其实是建立了一个相同的对象,而retain不是;2、copy是内容拷贝,retain是指针拷贝; 3、copy是内容的拷贝 ,对于像NSString,的确是这样,但是如果copy的是一个NSArray呢?这时只是copy了指向array中相对应元素的指针.这便是所谓的"浅复制".4、copy的情况:NSString *newPt = [pt c原创 2013-08-31 10:58:35 · 1943 阅读 · 3 评论 -
UICollectionView根据不同需求使用系统提供方法
经过对UICollectionView的进一步开发研究,灵活运用真的是其乐无穷啊,今天做了一个对比,一个简单的效果可以通过大量代码和“精简代码”两种代码量达到。我们先看我想要实现的效果 我要在一个界面实现六个collectionview,每一个collectionview包括三列。然后每个collectionviewcell只有一个图片。(为了简单展示这里只用一个图片展示了)。接下来就是col原创 2017-10-09 09:48:53 · 391 阅读 · 0 评论 -
MJRefresh的那些坑
现在正在写一个新的项目,由于之前用过MJ所以感觉这个第三方库还是相当简便的。可是真正用最新的MJ的时候才发现竟然也有坑。 1.MJ最新的库竟然跟一年多以前的风格完全不同了,之前用的MJ还是调用performselelctor实现的header和footer两个方法大致是这个样子的。 [myTable addHeaderWithTarget:self action:@selector(header原创 2016-04-29 15:20:18 · 9735 阅读 · 1 评论 -
GCD简析(同步、异步、串行、并行)
/* * *需求规定:四个耗时任务A、B、C、D,要求先执行A,A执行完毕后才能开始B和C,但是B和C没有先后顺序,即并发执行,但是必须B和C都结束以后才能执行D。 *因为四个任务都是耗时任务,所以必须放入子线程中才行,否则会导致线程阻塞,又B和C并发执行,所以B和C是异步并发执行的任务。下面是具体代码。 *///对任务A创建一个SERIAL队列,即同原创 2017-09-06 17:16:37 · 537 阅读 · 0 评论 -
自定义UICollectionReusableView
使用UICollectionView自定义是对UI方面灵活运用的体现,UICollectionView对自定义的特殊样式方面有很大的帮助。今天先讲一下传统UICollectionView布局时遇到的UICollectionReusableView无法刷新的问题。如果不知道原因的话在网上乱搜索只会搜到一个让你注册header的说法。但是一般情况下我们都会写注册方法的。但是还是无法回调header的协议原创 2017-05-27 15:13:40 · 4700 阅读 · 0 评论 -
类似于qq联系人的tablview能够展开和收缩
在.h文件中定义三个数组和一个tablview UITableView *listTable; NSMutableArray *listArray; NSMutableArray *proviceArray; NSMutableArray *statusArray;//定义一个点击方法-(void)ClickTheSection:(int)sec原创 2013-09-03 18:17:11 · 1015 阅读 · 0 评论 -
判断输入框中是否全为空格
输入框判断是否为空原创 2014-03-14 09:29:22 · 2486 阅读 · 1 评论 -
把uitextfield里面的内容转换成银行帐号格式
------------直接在页面里加这个方法-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { //获取当前的textfield NSString *text = [te原创 2013-08-31 13:57:10 · 855 阅读 · 0 评论 -
向info.plist文件中写入数据(nsdictionary)
plist 文件读写 //1. 创建一个plist文件 NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString *path=[paths objectAtIndex:0]; NSLog(@"path =原创 2013-10-03 18:48:50 · 1365 阅读 · 0 评论 -
后台播放音乐
刚刚在网上搜索了下,做后台播放音乐的时候需要对----info.plist添加一些设置在key下添加Required background modes 此时会出现新的item,在item的value值中输入App plays audio即可完成配置设置问题在代码中播放音乐的代码前做如下操作即可 AVAudioSession *sesion=[AVAudioSession sh原创 2013-09-10 12:50:43 · 677 阅读 · 0 评论