内存拷贝渲染视频的研究
Jun 2 2016
Uncategorized

内存拷贝渲染视频

这里说的视频渲染是指通过 CVPixelBufferRef 获取 CGImageRef 对象在 UI 上进行渲染的过程。

大家都知道视频渲染是一个非常麻烦的过程,一般来说我们会通过将 CVPixelBufferRef 转换为 CIImage 再将 CIImage 对象转换为 CGImageRef 来完成视频的渲染,其中 CIImage 渲染到 CGImageRef 的过程将会需要到 CIContext- render:toBitmap:rowBytes:bounds:format:colorSpace: 方法来实现,但是在实际使用过程中发现,在 iOS 9.0 系统上,使用这个方法渲染视频时会出现内存泄漏的问题(长时间调试发现似乎是系统的问题)于是花了很多时间来找寻如何绕过 CIContext 来进行视频渲染,最终找到了直接内存拷贝进行视频渲染的方法,也是最为快速的方法。

iOS
对切图标注的思考
Aug 15 2015
Uncategorized

start

为什么写这个呢,在开发了一段时间的客户端以后,发现在还原设计稿的时候,收到的标注搞总是无法传达出设计师的心意,总需要自己再去丈量设计师给的设计图,另外前段时间,知乎专栏上这篇文章似乎略火做一份让工程师泪流满面的标注,当时看了看,觉得很不错啊,然后发给我司设计师大人们看了,我司设计师跟我说,nonono,工作量略大,我在仔细看看了后觉得确实,一个设计稿需要做三个标注,那是多蛋疼的事情啊-,-但是作为一个不断上进的码农,于是在开发之余不断的思考,决定写个文章告诉设计师,我是怎么想的,按照我的想法来标注-,-目的是从根本上解决这个问题。。。。。。

那么我们的目的就是:

  • 把我们怎么用代码画界面,告诉设计师们
  • 减少设计师和攻城狮之间无必要的交流
  • 帮助设计师们用最少的成本做出让码农们泪流满面的标注稿
ReactiveCocoa 模式 —— RACScheduler
Feb 18 2015
Uncategorized
暂无文章摘要
ReactiveCocoa 模式 —— Signals
Jan 25 2015
Uncategorized

start

在小伙伴们都玩了好久RAC之后,我才开始研究如何使用-,-思来想去发现这东西看上去似乎很复杂,用起来确实也很复杂,里面涉及到很多概念是常规iOS或是OS X开发过程中完全没用到过的,同时RAC也将函数式编程的思想带到了iOS开发中。

在查找资料的过程中,找到了一个网站ReactiveCocoa Design Patterns这个网站里面对RAC的一些基础观念进行了比较好的解释,所以为了让自己能更好的学习,就决定翻译翻译,也希望能对大家学习过程中有帮助。

本文翻译自ReactiveCocoa Design Patterns

注意:下文中,为了方便大家理解,部分单词没有翻译,当然如果需要知道中文的,如下:

  • signal:信号
  • sequence:顺序序列
  • stream:流
  • pull-driven:拉驱动
  • push-driven:推驱动
  • value:值
  • error:错误
  • complete:完成

Signals

Signal是构造FRP程序最基础的砖块,一般来说,我们的程序组织一系列的signal,决定这些signal的值从何而来,signal之间如何连接,以及值如何在signal中传递。我们可以认为signal是一个管道,我们的应用程序是一个复杂的管道系统,将事件放入管道系统的输入端,从输出端得到结果。

学习iOS上QQ的聊天数据库
Jan 17 2015
Uncategorized

start

这篇内容完全是意外啊,起因是酱紫的

某日看见一个Mac的app打折大礼包(bundle)买了以后里面有个神奇的iPxx设备管理的app,叫iMazing,然后用iMazing尝试了下,发现居然可以看app里面的数据,然后出于手闲好奇的心里-,-我就点开了大TX的扣扣看了一眼,于是就产生了下面的一系列意外发现

iMazing长下面酱紫,用起来赶脚还是很不错的啊,于是我顺手点开了扣扣,出于学习的目的,研究了一下

iMazing Home

发现iMazing很强力啊,把整个app和数据都dump出来了,以及这次我们要讲的主角,消息记录,嘛大企鹅的消息记录在别的平台上似乎都是加密过的,iOS上却没有加密,这让人有点意外,不过估计也比较相信水果公司的沙盒是很安全的吧,不过这也给我们点机会一窥企鹅里面到底是啥样的。

另外本文完全自我yy的,水平有限写的不好的地方大家拍砖即可

iOS
巧用goto语句来进行C语言中的错误处理
Nov 16 2014
Uncategorized

start

很多人不喜欢goto,认为goto为代码结构带来了很多灾难,但是用的好的话,其实goto同样能够优雅的解决很多问题,比如下面说的这个

这个算是最近看的代码之髓第六章的一个读书扩展了,对于C里面,如何更好的处理错误,其中提到了一点Linux内核编码风格里面提到可以用goto来更好的集中处理错误,减少冗余代码,详情可以看Linux内核编码风格中的第七章——集中处理函数的退出

怎么做

内核编码风格第七章

第七章原文大意是这么说的

尽管有的人不喜欢goto,但是呢其实编译器里面还是一直用着无条件跳转这一和goto等价的东西。在一个函数里面如果有多个地方都需要进行清理和提交任务的时候,goto的好处就显现出来了。

c
自定义iOS导航动画
Sep 3 2014
Uncategorized

start

冒个泡,体现下存在感,哈哈哈哈,最近发现iOS自带的动画效果总是困扰着我-,-比如,iOS7上返回时,会自动加一个半透明的层做渐变感,比如返回的时候,总是整个view一起动的,动画过程中,我需要隐藏和显示导航栏等这些要求,原生的动画总是无法满足这些小小的要求!(ノ`□´)ノ⌒┻┻

经过数小时上网找资料,发现大神们要不就是一笔带过,要不就是懒得讲很多,于是,发现还是自己写比较科学啊┓( ̄∇ ̄)┏,下面我们来尝试做一个

做的方法

制作方法还是按照古法炮制,继承一个NSNavigationController然后重写其中的pop和push方法以达到我们的目的,在我的理解,导航控件他的pop和push方法,实现了在他自己的控制器栈中实现不断的出栈和入栈的操作,然后播放一小段动画,愉悦下大家,那么我们要做的事情就是去掉原来的动画,做pop,push的动作,然后播放我们自己的动画

截图工具

做动画之前,必须要有的一个东西就是,我们要让什么东西来动呢,那导航上必然是两个ViewController中的View的内容喽,那么我们就需要对UIView进行扩充,实现获取View中的内容。

iOS
Resizable Image 使用时遇到的透明的线
Apr 3 2014
Uncategorized

start

最近略忙啊。。。于是blog稍微暂停了一段时间啊,好吧今天来个短小精干的,说说最近遇到的一个问题了,其实可能大家都遇到过了,一个比较普通的问题,在使用Resizable Image和Stretchable Image的时候,出现透明线的问题。

问题观察和分析

iOS开发过程中啊,我们经常用到的一个东西就是Resizable Image或者叫Stretchable Image的图像,我来粗糙翻译下可以拉伸的图像,用来填充我们的界面,为啥呢,因为一个可以拉升的图像,我们只需要指定需要从那个位置开始拉升,那么我们就能使用一个图片,创造一堆不同大小的控件了。

观察

扯了好多闲,我们来看看到底是啥样的吧,因为,好麻烦不打算开demo了,于是我选择附上so转载图片的连接,并无耻的使用提问者的图片,SO问题原链,这篇原链上,大神们的讨论也解决了这个问题。

问题截图

虽说是截了别人图片我还是很厚道的加了点标注,重新创造了下,上面本来不应该会有的东西就是那几条跟消息气泡颜色不同的线了。

iOS
用起 Voice Over
Mar 10 2014
Uncategorized

start

好久木有出现了,大家放心cocoa drawing还在长线更新,最近搬家了,从美丽的彩云之南搬到了高端大气上档次的深圳。于是中间好多天都没有开电脑,好多天就都没有接着写了,以前一直OS X的,今天换换口味来次iOS。

最近看了一个感觉可能平时大家用的少的东西——Voice Over~就是碰一下屏幕就会说话的东西,神奇吧(魂淡,你就是尽找些没人耍的东西写么XDDD),嗯嗯,很神奇啊,so为啥说用的少呢-,-毕竟为特殊人群考虑的太少了,不过麻花的两个app做的还不错(ps,图形解锁直接废了XDDDDDDD能说这是bug么?),之前说找几个一直没找到合适的应用来看下别人做的效果,昨天不小心点了麻花的应用发现做的效果确实挺不错的。好,接下来我们看看怎么用起来。

用起Voice Over

平常要是我们用苹果原生的控件的话,那基本上是天生自带Voice Over的,也就是所有的东西都配合的天衣无缝,但是呢,要是某些小按钮啊,神马的,我们没有妥妥的设置好label之类的东西,更甚者用image之类的东西来当按钮的,那就不一定run的好了,那下面我们先讲下怎么处理原生控件的,接着讲下怎么自定义的,再接着讲下一种优化策略,本文一定程度上参考了Accessibility Programming Guide for iOS大家也可以看看这篇Guide了解更多。

iOS
把NSImage画在圆圈里面
Feb 1 2014
Uncategorized

start

新年快乐啊,虽然在努力码cocoa drawing guide part4,不过短线更新个小的,怎么把NSImage画到圆圈里面。

我们都知道,NSImageView是四四方方的,丑死了。。。为了让我们的UI好看点,大家必定是下了很多苦功夫的啊,所以今天就分享一个非常普通而又实用的东西,把NSImage画到一个圆里面。其实之前google了好会儿了,觉得网上大家的方法都很麻烦,所以还是决定自己DIY了:)

效果如下:

圆形

这一篇的内容就刚好用到了drawing guide part4——图像的内容,我会告诉我我也参考了下PaintCode么:P