V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  jox  ›  全部回复第 3 页 / 共 21 页
回复总数  406
1  2  3  4  5  6  7  8  9  10 ... 21  
2014-12-27 00:57:41 +08:00
回复了 jox 创建的主题 iDev 微信用来输入 gif 表情的那个键盘是怎么实现的?有人了解么?
@OctWu 我今年春节的时候从零开始学iOS开发,看了半个月的文档和各种guide,用了一个多月的时间写了一个应用,然后直到今年过完国庆节十月末的时候又重新捡起来,前后差不多有四五个月吧。

我没买苹果的开发者计划,所以不能测试在真机的FPS,但是我很有信心能够达到60FPS,异步渲染代码写起来不是很难,但是也有点麻烦,我的源代码本来是打算写好之后给我们学校的学弟学妹们开放的,如果你感兴趣到时候可以找我要,但是写完之前我是不会给别人看源代码的。

使用的技术其实很简单,就是text kit排版完成之后除非屏幕旋转否则不再进行排版,每次渲染的时候直接画就行了,这个我觉得挺关键的,其次就是使用off screen drawing技术,每次需要渲染cell的内容的时候直接使用GCD在后台开始画内容,画好之后再返回主线程看看当初需要提供内容的cell是否还是visible的,如果是,直接把画好的内容赋给layer的contents属性,这样的好处是同样是自己画,但是却没有使用drawRect,避免Core Animation整个没用的back store bitmap,既浪费内存又浪费CPU,同时主线程没有被阻塞,瓶颈就在GPU上,我的iPhone 4 GPU的性能已经足够给力了,一个高度超过10000points的图片从开始画到内容被GPU转化为屏幕上的像素几秒钟就完成了,同时GPU转化像素的过程非常非常地快,绝对不会超过16ms,所以用户只会看到屏幕一闪,内容就出现了,不会影响滚动,这就导致整个滚动的动画可以非常非常的流畅,达到了我希望的效果。你可以看看我在stackoverflow上的这个回答:

http://stackoverflow.com/questions/27467351/how-do-i-make-a-part-of-a-uilabel-visually-be-a-block-quote/27631302#27631302

这段代码是我用来画内容的,我稍微改了一下代码,不过技术是一样的,希望对你有帮助。异步渲染的代码原理就是我说的那个,你看看苹果的那个concurrent guide就行,没啥难的。
2014-12-27 00:36:46 +08:00
回复了 jox 创建的主题 iDev 微信用来输入 gif 表情的那个键盘是怎么实现的?有人了解么?
@OctWu 看名字似乎是异步渲染的框架,我不知道有这么个东西啊,我是用的GCD写的异步渲染那部分的代码,效果也挺不错的,差不多的数据量同样的设备我的应用比百度贴吧的程序要流畅!smooth as fuck, man
2014-12-27 00:23:43 +08:00
回复了 jox 创建的主题 iDev 微信用来输入 gif 表情的那个键盘是怎么实现的?有人了解么?
@OctWu 自己写可以学到很多很多东西,即使用别人的代码我也喜欢搞清楚别人是怎么做的再用,不过工作上这样弄大概不行,我现在在做的这个iOS应用跟我的工作无关,其实是当初想找个iOS开发的工作挖的坑,当时写好了之后觉得他妈的就是一坨屎,就搁硬盘里了,然后iOS开发的工作也没找着,真是惨,最近突然有时间了,决定把这个坑给填了,所以可以慢慢搞,搞到我满意为止,搞了两个多月了,就差最后这个输入表情的键盘了。

我也喜欢追求性能,别的什么都可以将就,但是程序一定要smooth,要fucking smooth,super fucking smooth,但无奈本身水平就是渣,所以花的时间也会多一些。
2014-12-27 00:08:34 +08:00
回复了 jox 创建的主题 iDev 微信用来输入 gif 表情的那个键盘是怎么实现的?有人了解么?
@OctWu 恩。。。很有道理,上面有人提到微信一直支持到iOS 5,刚才我又试了一下百度贴吧,发现只要加载过一次表情列表,之后就很顺畅了,他们应该是图片解码这块儿没有放到后台来做

我刚学习iOS开发的时候就吃过几次亏,很多东西不知道用现成的可以做就自己写,结果过了一段时间就发现问题了,然后发现有更好的方式,然后就又回去返工,蛋疼的要死,所以现在要做之前没做过的东西时都会谨慎一些,不敢直接懂动手自己写。
2014-12-26 23:57:04 +08:00
回复了 jox 创建的主题 iDev 微信用来输入 gif 表情的那个键盘是怎么实现的?有人了解么?
@OctWu 同一个列表,每个cell渲染内容使用同样的代码,collection view比table view卡,就是类似这种百度贴吧帖子列表的那种样式,可以用collection view来实现,也可以使用table view来实现,也可以从零开始使用scroll view来实现,我最开始用的就是scroll view,包括重用都是自己写的,然后又试了一下collection view,结果发现我自己写的不如collection view好,就用的collection view,最后知道原来用table view也能实现,又换成了table view,用table view的话就是使用group table,然后每个section单独放一个cell,当然也可能我collection view用的不对,我没有做深入的研究,我总觉得那个collection layout是造成collection view比table view性能差一点的原因。

现在我好奇腾讯为什么不直接使用collection view而要使用自己写的scroll view呢?哎,能跟腾讯的工程师问问就好了。。。
2014-12-26 23:08:31 +08:00
回复了 jox 创建的主题 iDev 微信用来输入 gif 表情的那个键盘是怎么实现的?有人了解么?
2014-12-26 23:07:10 +08:00
回复了 jox 创建的主题 iDev 微信用来输入 gif 表情的那个键盘是怎么实现的?有人了解么?
@yellowV2ex 苹果的那个photoscroll的示例代码就是直接继承scroll view做的,也不是一次性将所有的图片都读进内存的。另外我说你激动个蛋,我又没说一定要那么做。你的说法才有问题,表情列表本身的数据结构是一个set,同一个set里彼此之间的顺序是不重要的,你说的顺序和增减这个才不现实,即使有也没什么,切个图需要几分钟?升级直接替换掉之前的图片就可以了,并且实现起来也并不比collection view麻烦好几倍,我觉得在表情不多的时候比collection view需要的工作量更少。


@xummer 非常感谢
2014-12-26 22:51:44 +08:00
回复了 jox 创建的主题 iDev 微信用来输入 gif 表情的那个键盘是怎么实现的?有人了解么?
@yellowV2ex 如果不用collection view,还可以用什么方法来实现呢?直接使用scroll view来模拟collection view吗?
2014-12-26 22:50:17 +08:00
回复了 jox 创建的主题 iDev 微信用来输入 gif 表情的那个键盘是怎么实现的?有人了解么?
@yellowV2ex 不止几十个啊。而且我也没说列表是用动态图组成的啊,只是说发出去之后渲染用的是gif,发出去之后发送者和接受者两边不都得显示动画啊?你从哪看出来我的意思是用gif来组合列表的?

我在考虑该用什么样的方式来实现,性能是一方面,实现方式的难易也是一方面,我没实现过类似的东西,考虑一下不行吗?
2014-12-26 22:19:03 +08:00
回复了 jox 创建的主题 iDev 微信用来输入 gif 表情的那个键盘是怎么实现的?有人了解么?
@yellowV2ex 刚刚研究了一下微信,微信似乎也是用的collection view,额,我之前用过一段时间collection view,因为觉得不如table view流畅又换回了table view,所以对collection view的印象不太好。


你觉得使用几张固定尺寸的扁平的图片来排列表情这个方法怎么样呢?比如微信的兔斯基表情,微信是每个表情有一个gif文件,同时还有一个对应静态的png文件,里面是gif的第一帧,用户在输入兔斯基表情之前展示的表情列表是使用png文件组合出来的,表情发出去之后是用gif文件渲染的,列表的尺寸是固定的,所以这个也可以使用一张静态图片来实现,使用collection view就是用多个小图片来组合列表,然后通过collection view的delegate方法来捕获点击事件,使用静态图片的话就要使用gesture recognizer然后在捕获touch事件之后通过判断touch的位置来确定选择哪个表情。这样就不用写代码来一张一张地读取小图片然后组合列表了,但是需要使用图片剪辑软件来生成静态的列表。
@sophymax 我觉得独立开发者想靠做应用赚钱太难了,这种做法我能理解
@sunshower 我就是感慨一下,大家都不容易,就不给链接了。
@OctWu 可以给我发邮件,交流起来比较方便,其实我也是刚开始iOS的开发没多久,也是新手,哈。

这个: http://weibo.com/u/5341809257 这是我用来做图床的新浪微博,我刚随便发了个微博,你可以去给我发私信,我可以把我的邮箱地址告诉你,v2ex网站不能发私信,我不想把我的邮箱发到公网上
2014-12-26 21:39:23 +08:00
回复了 jox 创建的主题 iDev 微信用来输入 gif 表情的那个键盘是怎么实现的?有人了解么?
@OctWu 就是这个!我在网上检索了一下,非常感谢!
@jamesxu 我说的这哥们我不认识,就是我下了三个他的应用,结果都是一个,我就无语了。
@jamesxu 晕,应用也可以批量生产?怎么做到的?
2014-12-26 20:52:20 +08:00
回复了 jox 创建的主题 iDev 微信用来输入 gif 表情的那个键盘是怎么实现的?有人了解么?
@Elethom 什么工具?我开始做iOS上的开发没多久,目前工具只会用xcode和instruments,什么工具能满足我的需要?
2014-12-26 20:40:26 +08:00
回复了 jox 创建的主题 iDev 微信用来输入 gif 表情的那个键盘是怎么实现的?有人了解么?
@chmlai 我下载了weico,性能上感觉还行,与微信的表情键盘比起来差不多一样顺畅,我很好奇微信是怎么实现的,这位朋友了解吗?
2014-12-26 20:26:35 +08:00
回复了 jox 创建的主题 iDev 微信用来输入 gif 表情的那个键盘是怎么实现的?有人了解么?
百度贴吧的输入表情键盘在滚动的时候会有比较明显的卡顿,貌似是在主线程做的渲染,晕,还是微信的做得好。
@Havee 不清楚啊,真的是完完全全一模一样的应用,整了三个上去,开发者是同一人,换个图标,换个名字,再换个背景。。。。整个应用只有一个界面,使用系统键盘输入emoj字符。。。。这大哥怎么做到的。。。。App Store接受这样干吗?
1  2  3  4  5  6  7  8  9  10 ... 21  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2701 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 13ms · UTC 11:54 · PVG 19:54 · LAX 03:54 · JFK 06:54
Developed with CodeLauncher
♥ Do have faith in what you're doing.