关闭

视频添加滤镜的预览和导出

原理:利用CIFilter对视频进行逐帧处理 预览 AVPlayerItemVideoOutput能够处理视频播放过程中像素级别的buffer,其方法hasNewPixelBufferForItemTime:(CMTime)itemTime可以判断在itemTime 这个时刻是否有可用的像素信息,copyPixelBufferForItemTime: itemTimeForDisplay:可以取到这...
阅读(831) 评论(0)

自定义拖拽cell

UITableView自带的 move 效果需要拖特定的地方才能移动,有时并不方便。所以研究下拖任意部位拖走cell的方法 上图为一个横着的tableView,其中的图片可以长按之后拖走 思路为:隐藏选中的cell,用UIImageView来代替它,然后被拖来拖去。拖动的过程中如果到了一个新的位置,则更新dataSouce,并重新加载tableView,直至松手。松手后,移除替身UIImageV...
阅读(396) 评论(0)

自动布局的数学公式

上图中各个属性之间的数学关系如下: firstItem (relation) secondItem * multiplier + constant其中: * firstItem、secondItem为控件的位置属性,如前后上下 * relation包括 =、 = * multiplier为倍数 * constant为偏移 * 公式中未出现priority,它表示优先级,...
阅读(154) 评论(0)

AVComposition中的CALayer

AVMutableComposition除了可以插入视频轨道、音频轨道外,还可以在上面覆盖layer,以添加水印、动画等。想想新闻联播下面转圈的地球,这种效果没有layer还真不好做 AVVideoCompositionCoreAnimationTool AVVideoCompositionCoreAnimationTool用来在 video composition 中混合 Core Anima...
阅读(742) 评论(0)

CAMediaTiming的时间系统及动画暂停示例

相对时间 CAMediaTiming的时间是分层的,相对独立的,这样保证了每个图层/动画都有自己的时间,可以独立地加速、延时、偏移beginTime是与父图层/父动画开始的间隔; timeOffset是在父图层/父动画偏移的基础上进行的偏移; speed是在父图层/父动画速度的基础上进行的加速 全局时间(机器时间)、本地时间 视频的时间系统可以暂停、倒退,是从0开始的;动画在设置好fromV...
阅读(582) 评论(0)

main中的运行时(runtime)

原来 main 函数中就有 runtime 的典型示例int main(int argc, char *argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } }UIApplication 不知道自...
阅读(204) 评论(0)

CIImage CGImage UIImage 区别

我看见有人说,“不知道苹果怎么想的,搞了这么多乱七八糟的图片格式,转换起来很麻烦”,然后把大量的精力放在了格式转换上,真是醉了。此处不写方法,谨写些区别。CIImage 包含了创建图片的所有必要的数据,但其本身没有渲染成图片,它代表的是图像数据或者生成图像数据的流程(如滤镜);CGImage是基于像素的矩阵,每个点都对应了图片中点的像素信息;UIImage 管理图片数据,主要用来展现,如 UIIma...
阅读(1174) 评论(0)

OC对象的内存布局

一言以蔽之,属性(包括父类)都保存在对象本身的存储空间内;本类的实例方法保存在类对象中,本类的类方法保存在元类对象中;父类的实例方法保存在各级 super class 中,父类的类方法保存在各级 super meta class 中。下图是对象的内存布局,isa 指向其类对象,其余空间保存各级的 ivar:下图是类对象的内存布局(详细可看 runtime.h 中对 objc_class 的定义),i...
阅读(1138) 评论(0)

形象一点,view和layer的坐标

view的frame由bounds和center共同决定。概念不说,只打比方: 决定一张纸的大小的属性是长宽,这是bounds.size; 如今这张纸的中心位置钉着个图钉,若把这张纸钉在墙上,只需要知道图钉相对于墙的位置,这是center; 现在要在这张纸上的某个坐标画个点,那应该知道这个坐标系的原点在哪,这是bounds.origin。大小不说,layer的位置由position和ancho...
阅读(331) 评论(0)

isKindOfClass与isMemberOfClass的源码

isKindOfClass : kind,表示一个种类,如:子类是父类的一种,是类的家族。其实现如下:- (BOOL)isKindOf:aClass { Class cls; for (cls = isa; cls; cls = cls->superclass) //从自己的元类开始,顺着父类往上找 if (cls == (Class)aClass)...
阅读(266) 评论(0)

从几个例子理解串行并行队列及同步异步任务

例1- (void)viewDidLoad{ [super viewDidLoad]; NSLog(@"1"); dispatch_sync(dispatch_get_main_queue(),^{ NSLog(@"2"); }); NSLog(@"3"); }此例死锁。viewDidLoad 和 block 的任务都要在主线程...
阅读(1032) 评论(0)

AVAsset、AVMutableComposition系列类的理解及视频裁剪示例

裁剪视频是很久之前所做的项目中用到的,现在又看到了,整理一下。 与之相关的这些类有些抽象,所以我这里重点将它们具体化。用代码将视频合成其实与绘声绘影/vegas等软件将视频合成的过程类似,首先了解下这类软件一些相关知识:一个工程文件中有很多轨道,如音频轨道1,音频轨道2,音频轨道3,视频轨道1,视频轨道2等等,每个轨道里有许多素材,对于每个视频素材,它可以进行缩放、旋转等操作,素材库中的视频拖到轨...
阅读(3460) 评论(0)

dequeueReusableCellWithIdentifier: forIndexPath: 获取cell

在自定义cell的情况下,dequeueReusableCellWithIdentifier:方法获取的cell可能为空,需要代码判断,手动加载cell的xib文件。而dequeueReusableCellWithIdentifier: forIndexPath: 方法获取的cell不会为空。使用步骤为: 1.在tableView初始化时,向tableView注册重用identifier[_tab...
阅读(494) 评论(0)

扫码登录的简易实现

开发环境为:tomcat服务器,ios客户端 服务器 服务器是这个设计的核心,基本思路如下: 1、在一个工具类中,用一个静态map nameAndPasswordHashMap模拟若干个用户,用一个静态map uuidAndUserHashMap表示二维码uuid与用户的对应关系,用一个静态map UserStatHashMap表示用户是否扫描与是否确认登录。 2、当用户打开显示二维码的页...
阅读(3659) 评论(0)

iOS 原生扫码

iOS 可以自己识别二维码,完全不用去找第三方文件。 摄像头用AVFoundation来实现:@property (strong, nonatomic) AVCaptureSession *session;//整个捕捉过程的中心 @property (strong, nonatomic) AVCaptureDeviceInput *inputDevice;//输入设备 @property (str...
阅读(681) 评论(0)
32条 共3页1 2 3 下一页 尾页
    个人资料
    • 访问:26542次
    • 积分:579
    • 等级:
    • 排名:千里之外
    • 原创:32篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类