自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

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

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

2016-07-11 19:38:44 3120

原创 自定义拖拽cell

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

2016-07-06 20:34:49 948

原创 自动布局的数学公式

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

2016-06-29 10:58:19 449

原创 AVComposition中的CALayer

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

2016-06-25 12:52:47 2421

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

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

2016-06-24 18:05:45 1470

原创 main中的运行时(runtime)

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

2016-05-17 17:02:12 448

原创 CIImage CGImage UIImage 区别

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

2016-05-17 15:00:08 4164

原创 OC对象的内存布局

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

2016-05-13 10:46:11 4413

原创 形象一点,view和layer的坐标

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

2016-04-29 17:31:27 585

原创 isKindOfClass与isMemberOfClass的源码

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

2016-04-16 17:53:25 553

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

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

2016-04-16 16:44:23 2153

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

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

2016-03-13 17:37:49 10001

原创 dequeueReusableCellWithIdentifier: forIndexPath: 获取cell

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

2015-12-19 15:29:25 1396

原创 扫码登录的简易实现

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

2015-10-21 21:44:28 11062

原创 iOS 原生扫码

iOS 可以自己识别二维码,完全不用去找第三方文件。 摄像头用AVFoundation来实现:@property (strong, nonatomic) AVCaptureSession *session;//整个捕捉过程的中心@property (strong, nonatomic) AVCaptureDeviceInput *inputDevice;//输入设备@property (str

2015-10-21 20:07:30 1231

原创 nat123 + tomcat 在内网搭建外网可以访问的java web服务器

半年没写过java了,突然让搞后台,虽然措手不及,但是收获挺多。服务器写好了,但由于在学校是内网,没有公网ip,外面访问不到,且ip地址还经常换。由于只是测试,所以本着最省钱的想法,找到了一款叫nat123的软件。 nat123的原理依然是NAT穿透,操作也十分简单:注册->下载客户端->添加端口映射。其中主要难点是添加端口 对全端口映射简单提一句:它是不需要n币(类似论坛币,免费)、t币(

2015-10-21 19:15:31 3004

原创 iphone利用UIPopoverPresentationController实现popover

有时候不是方法难,而是找方法难。一旦找到了好的方法,有了明确的方向,剩下的就只是时间问题了。 +—————————————————————- 关于iphone实现popover的效果,网上大多资料都是利用别人写好的库来实现。其实ios8之后有了新方法UIPopoverPresentationController,可以直接实现的。 UIPresentationController管理了所有的U

2015-10-21 18:45:25 4007 1

原创 模态视图总结

学习知识时应从小到大,总结知识时应从大到小。(整体与局部) 模态视图是在当前视图上弹出一个新视图,并且还可以再弹回去,这两个过程就是模态视图中的两个最重要函数://用于弹出viewControllerToPresent这个视图,后两个参数表示:是否有动画,回调函数-(void)presentViewController:(UIViewController *)viewControllerToPr

2015-06-05 17:07:32 487

原创 自定义归、解档

自定义的类若要实现归、解档,需要遵守NSCoding协议。实现该协议后,就可以像对基本类型那样对自己写的类进行归、解档。 NSCoding协议中有两个方法:- (void)encodeWithCoder:(NSCoder *)aCoder;//归档时的编码方法- (id)initWithCoder:(NSCoder *)aDecoder; //解归档时的解码方法以Person类为例,实现归解档。

2015-05-28 18:19:05 656

原创 基本类型的归、解档

一、当只有一个基本类型对象时,只需调用[NSKeyedArchiver archiveRootObject:obj toFile:path];便可将obj对象(NSString、NSDictionary、NSArray、NSData、NSNumber等)归档到path指定的路径中;调用[NSKeyedUnarchiver unarchiveObjectWithFile:path];便可将对象解归档,

2015-05-28 17:05:01 650

原创 通知notification

通知模式比观察者模式耦合度更低;观察者模式下被观察的对象是被动监听,而通知模式中被监听的对象是主动发出通知。接收通知的一方需要使用如下方法添加监听:[[NSNotificationCenter defaultCenter] addObserver:obj selector:@selector(action) name:@"notificationName"];这里Observer后跟接收通知者;se

2015-05-28 15:20:21 381

原创 将装了win的mac重装回来具体步骤

感谢老师,让我暂时告别了虚拟机,用上了mac,留图我的虚拟机 但这个macbook装的是win8系统,需要重新装回OS X。 步骤1:制作启动u盘; 步骤2:在mac上安装系统。 一、制作启动盘 首先下载OS X的dmg文件 然后使用TransMac将文件录到u盘中。右击u盘,选择format disk for mac,将其格式化为mac的格式,一路确定,然后再右击选择resto

2015-05-21 18:24:53 2855

原创 'release' is unavailable: not available in automatic reference counting mode

点开项目,在build settings中找到Objective-C Automatic Reference Counting选项,将其设置为no

2015-05-20 20:22:32 1001

原创 OC数据类型

1、字符串 NSString是不可变的字符串常量,NSMutableString是可变的字符串。 初始化:NSString *str=@"hello";NSString *str2=[NSString stringWithString:str];NSString *str3=[[NSString alloc]initWithString:@"hello"];NSString *str4=[

2015-05-20 11:55:54 332

原创 关于打开新链接后js没有加载的问题

这次解决的原因为: Jquery Mobile支持所有标准的html格式,为了让体验更加流畅,Jquery Mobile会把同一个域下的所有指向页面的链接都会自动转为ajax请求,并且用动画的转场效果实现切换。 解决方法:在超链接里加 data-ajax=”false” 或 rel=”external”,如 <a href="index.html" data-ajax="false">首页</a

2015-04-28 21:17:22 476

原创 IDEA修改默认的user

成功修改了默认的user,记录一下。 在安装目录的/bin下找到idea.exe.vmoptions 和idea64.exe.vmoptions,在文件的最后(好像也可以不是最后)添加一行:-Duser.name=huqiwen。 据说32位的修改idea.exe.vmoptions,64位的修改idea64.exe.vmoptions,我一次全改了,成功后也没有深究。又有在settings的f

2015-04-13 16:03:34 6159

原创 hello struts2

万事开头难。入手struts2最简单的例子,过程为: (1)浏览器请求http://localhost:8080/hello.action,该请求要通过web.xml中配置的filter过滤器; web.xml主要代码: <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.str

2015-04-09 20:05:22 444

原创 最近前端的一些总结

最近用jquery mobile做了一个下拉菜单和一个div轮播效果,遇到了很多细节的问题,没有体系,难以总结(我承认我懒了……),仅一些感触写写吧。一、明确目的后,选择一条什么样的途径来实现就很重要。不同的路径难度不同,优劣不同,等等。做下拉菜单时,一开始的想法是:当点到1级菜单时,动态的加入其2级菜单,于是不断的插入新的li。这种方法逻辑简单,但是写起来很复杂,代码很冗余,重复利用率低

2015-04-09 19:27:28 340

原创 servlet处理html的表单

需要注意的点有:1、html页面中form要有提交的action;2、web.xml要配置好,能让action链接过去。servlet那里比较容易理解,关键是看需要什么样的功能了,练习嘛,所以用了最简单的,顺便练练向浏览器写纠结的html语言,这样也许才能更加深刻理解为什么要用jsp。login网页的body:

2015-01-28 21:42:28 984

原创 用IEDA开发一个javaweb

两个难题:配置、目录。当然,也有初用IDEA的无知。1、IDEA中的project相当于Eclipse中的工作空间,module才相当于Eclipse中的project。首先建立一个project,然后建立jweb Application 的module。2、然后需要自己配置目录:在电脑中生成的文件夹中找到WEB-INF,在其下建立新文件夹classes和lib。3、在ID

2015-01-27 23:06:04 1546

原创 c语言下的dns解析

首先要了解表达主机的结构体hostent。其定义如下:123456789structhostent{char*h_name;char*h_aliases;shorth_addrtype;shorth_length;char**h_addr_list;

2014-11-18 17:10:15 2009

原创 padding,border,margin的区别

翻了一些资料,自己又写了写,算是简单的区分了这san

2014-10-20 11:03:24 1049

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除