
IOS随笔札记
Smile凌烟阁
这个作者很懒,什么都没留下…
展开
-
iOS 弹性动画之弹出分享菜单的实现
+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay usingSpringWithDamping:(CGFloat)dampingRatio initialSpringVelocity:(CGFloat)velocity options:(UIViewAnimationOptions)op...转载 2017-05-03 16:07:20 · 4174 阅读 · 0 评论 -
GPUImage学习日记(2)之视频录制
简介:GPUImage 关于视频录制主要类就是GPUImageVideoCamera,本文就视频录制添加滤镜保存等都做一个简单说明.大致思路:初始化GPUImageVideoCamera并添加音频输入输入设置添加展示ImageView 和 滤镜设置(如:GPUImageVignetteFilter)初始化GPUImageMovieWriter数据写入方法录制结束移除GPUImage原创 2017-08-24 15:55:05 · 356 阅读 · 0 评论 -
AR学习日记(1)
前言:最近大致看了下风风火火的ARKit,初步了解了其中的一些概念和使用方法,这里简单记录下,之后会随着本人的逐渐学习再更新相关学习体会。AR (Augment Reality)顾名思义“增强现实”(这里就不再多做解释了,如果对这个概念不太了解的朋友可自行上网查阅相关信息),利用xcode9可以选择创建一个新的AR项目,在项目文件中可发现,AR项目自动引入了SceneKit和 ARKit,其实原创 2017-09-25 16:44:56 · 542 阅读 · 0 评论 -
GPUImage学习日记(1)
简介:GPUImage 是基于GPU处理图像的一个开源库,对图像处理有巨大优势。引用方式:可直接把源码拖入项目也可直接引用静态库文件。通过github官方介绍,简单写了个demo。大致思路如下给GPUImageStillCamera添加滤镜GPUImageSketchFilter给filter添加输出imageView 即GPUImageView最后将输出界面添加到视图即可原创 2017-08-23 21:32:11 · 464 阅读 · 0 评论 -
CoreBlueTooth 蓝牙开发相关总结
前言:最近项目中用到了蓝牙和公司硬件通信,所以入手研究了一下相关知识,特此记录下.利用CoreBlueTooth解决蓝牙通信前提是硬件外设需是蓝牙4.0及其以上规格设备.@property (nonatomic, strong) CBPeripheral *peripheralBLE; //外设@property (nonatomic, strong) CBCentralMa原创 2017-09-20 17:33:35 · 419 阅读 · 0 评论 -
OpenGL ES 学习日记(1)
简介:OpenGL ES 运行跨越CPU , GPU 之间,协调两个内存区域之间的数据交换。关于OpenGL ES 缓存 OpenGL ES 为两个内存区域间数据交换定义了缓存的概念,缓存是指图形处理器能够控制和管理的连续RAM,程序从CPU的内存复制数据到OpenGL ES 的缓存。在GPU取得一个缓存的所有权以后,运行在CPU中的程序理想情况下将不再接触这个缓存。这样就意原创 2017-08-31 22:16:30 · 356 阅读 · 0 评论 -
IOS 视频硬编码H.264
前言在学习了落影大神的相关博客及WWDC有关编解码的视频后准备总结下所思所得,先写有关硬编码的内容之后会再写关于硬解码的内容.概念简要众所周知,我们平时在网络上收看视频会经历视频编码及解码的过程.编码是为了减小视频网络传输消耗的资源,解码是为了将压缩后的视频恢复成可以观看的格式,目前编码大多采用的是H.264规格.H.264是一种广为认可的编码格式, 包含由一系列NALU组翻译 2017-12-28 17:09:41 · 2459 阅读 · 0 评论 -
IOS路由设计之JLRoutes
简介:对于一个业务逻辑复杂的应用,为更好实践组件化开发,设计一个优秀的路由层就显示的很重要。本文就JLRoutes实现页面之间MVVM模式下相互跳转设计思想及使用方法进行探讨。JLRoutes 把页面组件等看作是请求资源URI,可把相应的视图转化为JLRoutes与程序配置的URL scheme组合起来以字典形式加入routes中。所以需要在appdelegate文件中设定相应访问权限- (BOO...转载 2017-08-19 16:36:28 · 1714 阅读 · 0 评论 -
CGContextRef 与CGMutablePathRef画图用法
As all know ,CGContextRef 与 CGMutablePathRef 都是画图工具,其中CGMutablePathRef 可与CAShapeLayer或CGContextRef配合使用.CGContextRef用法获取当前图形上下文: CGContextRef context =UIGraphicsGetCurrentContext();设置线条颜色:CGContextSetS...转载 2017-05-04 12:50:37 · 3351 阅读 · 0 评论 -
ios calendar 结构体使用
calendar 是用于存储计算时间的结构体,可根据具体使用确定其单位,判断依据等信息。其中Identifier 定义如下,可知有阳历阴历等计算时间的方法,可根据实际情况选择。 public enum Identifier { /// The common calendar in Europe, the Western Hemisphere, and elsewhere....转载 2017-04-09 17:44:36 · 590 阅读 · 0 评论 -
GPUImage学习日记(4)之添加文字水印
前言:利用GPUImage可以给图片或者视频添加水印,大致分为三种水印:视频水印,图片水印,文字水印。其中图片水印与文字水印更为相似。本文结合具体实例来讲解录制视频时添加文字水印的实现过程。大致思路:利用GPUImageUIElement 创建相关水印(文字/图片水印)创建相关GPUImageVideoCamera及GPUImageMovieWriter对象给GPUImageVid原创 2017-09-12 21:23:01 · 2051 阅读 · 0 评论 -
GPUImge学习日记(3) 之滤镜组合使用
简介:我们常常遇到需要叠加使用滤镜的业务需求,比如一个相机app里既需要素描效果的同时又需要周围阴影效果以突出中间图像.这就需要本文介绍的有关滤镜组合使用的内容.GPUImage 中关于滤镜组合使用有两种方法:GPUImageFilterGroup与相应filter(GPUImageFilter)相结合将需要使用的filter相累加第二种方法以后另讲,这里主要讲一下有关使用GP原创 2017-08-25 17:20:53 · 508 阅读 · 0 评论 -
CGContextRef 堆栈保护操作
CGContextRef 堆栈保护操作原创 2017-05-05 15:59:04 · 385 阅读 · 0 评论 -
iOS 错误记录
Member reference type ‘struct objc_class *‘ is a pointer; maybe you meant to use ‘->‘?之所以会出现这个错误提示,是在类方法里使用了self,这是错误的写法,因为这时尚未初始化.原创 2017-05-25 15:11:22 · 2892 阅读 · 0 评论 -
也谈NSTimer的使用
先来看NSTimer invalidate()方法的官方说明Stops the timer from ever firing again and requests its removal from its run loop.This method is the only way to remove a timer from an NSRunLoopobject. The NSRunLoop...原创 2017-03-31 13:15:28 · 226 阅读 · 0 评论 -
IOS 16进制字符串实现Java parseInt()算法及其相关
JAVA专业字符串按进制转换补码获取其值的算法直接用parseInt()一句代码即可,OC的话可按照补码的原理一步步实现.补码:正整数的补码是本身,负数的补码是除符号位全部取反再加一.如题,要想实现算法,将字符串按照十六进制每两位进行求补码运算获取byte数组即可. +(int )HexToByte:(NSString *)hexString{ NSInteger len...转载 2017-07-21 11:46:18 · 604 阅读 · 0 评论 -
DWURunLoopWorkDistribution源码解读
简介:IOS 合理利用Runloop可高效率利用内存,优化程序性能。DWURunLoopWorkDistribution就是一个合理利用runloop来高效率显示tableview的例子。其不仅包含runloop也包含了runtime的一些内容。关于runloop主要方法+(void)_registerRunLoopWorkDistributionAsMainRunloopOb原创 2017-08-20 16:39:05 · 759 阅读 · 0 评论 -
[CATransaction flush] 作用详解
众所周知,CATransaction 是核心动画类中的事务类,负责将图层树的修改作为原子更新到渲染树.其分为隐式事务和显式事务.我们平时所做的针对layer层的操作都是隐式事务,如self.view.layer.backgroundColor = [UIColorredColor].CGColor;显式事务为运用begin ,commit方法创建使用.显式事务在同时设置多个图层的属性的时候(例如当...转载 2017-04-11 18:08:12 · 2693 阅读 · 0 评论 -
CABasicAnimation之animationWithKeyPath方法
CABasicAnimation中可以用animationWithKeyPath类方法来创建动画.其中keyPath的值有以下若干.transform.scale = 比例转换transform.scale.x = 闊的比例转换transform.scale.y = 高的比例转换transform.rotation.z = 平面图的转换opacity = 透明度margin = 布局zPositi...转载 2017-02-13 15:50:08 · 1540 阅读 · 0 评论 -
手势冲突,设置优先级
可以用该方法来解决手势添加冲突问题.- (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer;示例代码如下: // 单击 显示或者隐藏工具栏 UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer all...转载 2017-01-10 17:32:31 · 3518 阅读 · 0 评论 -
粒子动画
粒子动画中的关键概念是CAEmitterLayer和 CAEmitterCell,其中CAEmitterLayer是发射源,CAEmitterCell是发射出去的粒子.其余的一些属性官网或者百度都可以知道.另附代码如下 UIView *view = [[UIView alloc] initWithFrame:CGRectMake(self.view.bounds.size.width / 2...转载 2017-02-07 09:26:54 · 549 阅读 · 0 评论 -
AVAssetImageGenerator 的理解和使用
AVAssetImageGenerator 是用来提供视频的缩略图或预览视频的帧的类.可以用AVAsset来初始化: initWithAsset: 或assetImageGeneratorWithAsset:(生成图片的真正时间可能在requestedTimeToleranceBefore 和 requestedTimeToleranceAfter之间,也可能和请求时间无关.)可以用异步方法获取...转载 2017-01-10 14:41:39 · 5605 阅读 · 0 评论 -
Runtime之关联对象简述
关联对象,用于解决需要在对象中存放相关信息的问题.1.key 可以给某个对象关联许多其他对象,这些对象通过“键”来区分。2.objc_AssociationPolicy(存储策略)存储对象值时,可以指明“存储策略”,用以维护相应地“内存管理语义”。如下表中列出了该枚举值,同时还列出了与之等效的@property属性:假如关联对象成为了属性,那么他就会具备对应的语义。关联类型等效的@property...转载 2017-02-15 10:59:01 · 284 阅读 · 0 评论 -
AVFoundation之视频编辑组合
前言:AVFoundation 在视频编辑上提供了一系列的API来创建非线性,无损的应用程序。我们可以利用AVComposition来实现有关资源组合的功能。 一个组合就是将其他几种媒体资源组合成一个自定义的临时排列,再将这个临时排列视为一个可以呈现或处理的独立媒体项目。如AVAsset对象,组合相当于包含了一个或多个给定类型的媒体轨道的容器。AVComposition 中的轨道都是A...转载 2017-09-19 21:07:35 · 927 阅读 · 0 评论 -
判断视/音频是播放/暂停状态
可根据player的rate来判断,官方文档是这么介绍rate,A value of 0.0 pauses the video, while a value of 1.0 plays the current item at its natural rate. 也就是说,当其值为0.0时,暂停视频的播放;当值为1.0时,以其自身实际速率来播放视/音频....转载 2017-01-10 17:28:04 · 2560 阅读 · 0 评论 -
基于利用AVFoundation 解决视频文件边下边播简析
简介:现阶段下主要利用AVFoundation解决视频文件边下边播的问题.其大致思路是1.AVPlayerItem 是利用相应的AVURLAsset资源创建的2.根据媒体资源URL创建AVURLAsset时需要对url进行修改,以便确保下一步的实施.3.将asset的resourceLoader设置代理对象,代理对象有必要实现其中相关方法.下面根据源码一步步讲解具体实现方法 self...转载 2017-09-11 21:45:29 · 771 阅读 · 0 评论 -
AVFoundation视频缩放研究
前言:IOS7之前是通过AVCaptureConnection的videoScaleAndCropFactor属性来实现图片拍摄的缩放,而且对预览层也不能实时更新,基于此,从IOS7开始视频缩放主要依靠AVCaptureDeviceFormat来实现。重点: IOS7为AVCaptureDevice提供了videoZoomFactor的属性,用于控制捕捉设备的缩放等级,最小值为1,最大...转载 2017-09-13 22:38:43 · 1177 阅读 · 0 评论 -
UITableView侧滑添加多个按钮
这个很简单,就不过多介绍了,直接上代码,方便以后查询- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { return YES;}-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView...转载 2016-12-28 15:42:23 · 394 阅读 · 0 评论 -
UIAlertController message信息左对齐
主要就是对UIAlertController 进行子View遍历获取messageLab,然后设置其相应属性.关键代码如下 UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"发现新版本" message:infoUpdateStr preferredStyle:UIAlertC...转载 2016-12-20 15:55:26 · 1864 阅读 · 0 评论 -
导出.p12证书文件
有很多初学者朋友会发现导出p12证书文件时没有该选项,这样的错误原因是因为没找对地方,应该在钥匙串的我的证书里寻找该证书,再进行导出操作.转载 2016-12-12 10:19:32 · 1532 阅读 · 0 评论 -
CAKeyframeAnimation
CAKeyframeAnimation跟CABasicAnimation的区别是:CABasicAnimation只能从一个Value变到另一个Value,而CAKeyframeAnimation会将这些数值保存在数组中或者以路径(path)形式保存.另附代码如下:- (instancetype)initWithFrame:(CGRect)frame withSuperView:(UIView *...转载 2017-02-07 11:01:56 · 915 阅读 · 0 评论 -
iOS tableview 区头随着cell滑动
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ CGFloat sectionHeaderHeight = 60; if (scrollView.contentOffset.y <= sectionHeaderHeight && scrollView.contentOffset.y> 0) ...转载 2017-01-05 15:38:35 · 1669 阅读 · 0 评论 -
解析XML
虽然现在大多用JSON很少用到XML,但是也是很有必要懂得XML的相关用法,编程的道路是趋向深度和广度的,共勉.笔者使用NSXMLParser来完成对XML的解析.首先,需要创建NSXMLParser对象. NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData: obj.messageData]; [x...转载 2016-11-24 16:50:40 · 236 阅读 · 0 评论 -
XCODE 正确添加资源文件需要注意的地方
xcode 在添加资源文件时注意要勾选copy Item ...选项,然后在Build Phase 中添加该资源文件.如下图所示转载 2016-12-22 12:46:08 · 3291 阅读 · 0 评论 -
高仿Demo获取该App图片
用 iOSImagesExtractor可轻松获取某一App的图片,可从网上下载安装该软件,在MAC上连接上手机,将需要获取图片的App拉倒该软件中点击start就可以了,很方便.以下是简单示范:...转载 2016-12-02 10:52:54 · 369 阅读 · 0 评论 -
UIView 中autoresizingMask的属性
UIView 中有一个autoresizingMask的属性,其是一个枚举类型,作用:自动调整子控件与父控件中间的位置,宽高。 enum { UIViewAutoresizingNone = 0, UIViewAutoresizingFlexibleLeftMargin = 1 << 0, UIVie...转载 2015-09-19 15:29:02 · 362 阅读 · 0 评论 -
iOS 模糊搜索的实现
模糊搜索的实现思路是当搜索框开始编辑时对搜索框中的文本与后台给的资源相对比,包含搜索文本的展示在tableview中.关键部分代码如下:-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{ self.result = nil; for (int i = 0; i &...转载 2016-11-23 13:16:47 · 3055 阅读 · 0 评论 -
利用NSNotificationCenter进行页面传值
如题,当我们需要在页面跳转时传值的话,可以利用NSNotificationCenter来传值,我一般是在返回上一界面需要更新数据时进行这个操作.总的来说,主要利用在发出通知时添加所需要的信息即可.如:[[NSNotificationCenterdefaultCenter]postNotificationName:@"deleteChatMembers"object:selfuserInfo:@{@...转载 2016-11-21 13:33:07 · 494 阅读 · 0 评论 -
缓存图片信息
其实利用ios原生网络请求或第三方库AFN/SDWebImage都可以做到.这里记录一下SDWebImage关于这方面的使用方法.看源代码会发现- (UIImage *)imageFromDiskCacheForKey:(NSString *)key;- (void)storeImage:(UIImage *)image forKey:(NSString *)key; //把数据存到内存和硬盘缓存...转载 2016-11-25 13:09:27 · 357 阅读 · 0 评论 -
Core Animation 系统学习第一篇
Core Animation 位于 AppKit 和 UIKit的底层,并被紧密的集成到视图工作流中。Core Animation 本身并不是绘图系统,它是一个合成与操作您app内容于硬件中的基础框架。而在该框架中最为核心的便是 layer objects (层对象),用来管理和操作您的内容。一个layer 捕捉您的内容到位图中,这样有利于被视图硬件便捷地处理。在大部分app中,layers被...翻译 2018-06-04 16:13:39 · 321 阅读 · 0 评论