iOS学习笔记9 - 组件库介绍1
总算成功开发完了第一个较大的功能(即时通信)。毕竟不可能什么东西都从轮子开始造,于是用到了一些组件,这里简单列举一下吧。
1. FMDB
作为一种文件型的数据存储方式,SQLite在iOS开发中自然也有用到。
FMDB(https://github.com/ccgus/fmdb)是一个SQLite的Wrapper。它封装了SQLite的方法,简化成三个主要的类:
FMDatabase:用来执行SQL,表示一个SQLite数据库
FMResultSet:显示FMDatabase查询的结果
FMDatabaseQueue:多线程情况下使用。
具体的API就不多介绍了。不过需要提到的是:iOS官方提供的存储数据的方法是Core Data。不过那又是另外一个topic了。
2. Emoticon
从iOS5开始,增加了一个Emoji (絵文字)的键盘(默认隐藏)。
当然实际上这只是对于类似@"\ue415"的字符串的系统内置自动转换。如果要实现这个的话,不需要写什么额外的代码。
但是如果你要像我一样做一个自定义的Emoticon(发送表情)的话,就有的苦好吃了。。。
在https://code.google.com/p/emotionlabel/ 有一个基于DTCoreText的类EmotionLabel。不过我最终没有用这个类,是因为在引入DTCoreText的时候,其中的Color相关的类和我应用中的类冲突了。。。另外还有一些很奇怪的bug,比如发送完消息后会出现一个Bad Access的运行时错误,我最终也没debug出来到底是由于什么原因造成的。。。可能是因为我没用ARC吧。
我最终实现的方法非常土鳖:将一个UILabel中的每一个字符拆成一个UILabel,并找出特定的字符串(例如[:10],将其替换为UIImage。存在一个很严重的bug:没法处理一个单词中的换行问题。当然也可以靠加“-”或检测空格来回避,但存在deadline这个东西。。。
3. 自定义键盘
这个没用到什么组件,全手工从头开始打造。
可以参考以下两篇文章:
http://gregheo.com/blog/ios-custom-keyboard/
http://thekspace.com/home/component/content/article/63-ioscustomkb.html
4. SBJsonParser
这个是用来解析Json数据的库。
虽然这名字有点那个。。。
5. WEPopover
https://www.cocoacontrols.com/controls/wepopover
这是一个弹出矩形弹出框的控件。似乎Evernote也有用到。
6. GANTracker
如果担心在手机上没法用Google Analytics的话,可以调用这个库。
全名应该是Google Analytics SDK for iOS v1 (Legacy)
https://developers.google.com/analytics/devguides/collection/ios/devguide?hl=ja
iOS学习笔记9 - 组件库介绍1的更多相关文章
- iOS学习笔记16-数据库SQLite
一.数据库 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等.离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式: 归档:NSKeyedArchiver 偏好设置:NSU ...
- iOS学习笔记17-FMDB
上一节我已经介绍了SQLite的简单使用,不了解的可以提前去看一下iOS学习笔记16-数据库SQLite,这节我们来讲下FMDB. 一.FMDB介绍 FMDB是一种第三方的开源库,FMDB就是对SQL ...
- iOS学习笔记17-FMDB你好!
上一节我已经介绍了SQLite的简单使用,不了解的可以提前去看一下iOS学习笔记16-数据库SQLite,这节我们来讲下FMDB. 一.FMDB介绍 FMDB是一种第三方的开源库,FMDB就是对SQL ...
- [置顶] iOS学习笔记47——图片异步加载之EGOImageLoading
上次在<iOS学习笔记46——图片异步加载之SDWebImage>中介绍过一个开源的图片异步加载库,今天来介绍另外一个功能类似的EGOImageLoading,看名字知道,之前的一篇学习笔 ...
- iOS学习笔记20-地图(二)MapKit框架
一.地图开发介绍 从iOS6.0开始地图数据不再由谷歌驱动,而是改用自家地图,当然在国内它的数据是由高德地图提供的. 在iOS中进行地图开发主要有三种方式: 利用MapKit框架进行地图开发,利用这种 ...
- iOS学习笔记-精华整理
iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...
- iOS学习笔记总结整理
来源:http://mobile.51cto.com/iphone-386851_all.htm 学习IOS开发这对于一个初学者来说,是一件非常挠头的事情.其实学习IOS开发无外乎平时的积累与总结.下 ...
- iOS学习笔记之UITableViewController&UITableView
iOS学习笔记之UITableViewController&UITableView 写在前面 上个月末到现在一直都在忙实验室的事情,与导师讨论之后,发现目前在实验室完成的工作还不足以写成毕业论 ...
- iOS学习笔记-自定义过渡动画
代码地址如下:http://www.demodashi.com/demo/11678.html 这篇笔记翻译自raywenderlick网站的过渡动画的一篇文章,原文用的swift,由于考虑到swif ...
随机推荐
- Axios使用文档总结
vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐的axios.Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中. 一.安装 ...
- decorator在Python中的作用
decorator(装饰器)在python中作用,可以起到代码复用,也可以起到AOP(面向横切面)的作用. 另外很重要的一点应该就是function在python的世界中是作为一等公民存在的. 在py ...
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat等使用详解
转载:http://blog.csdn.net/tzs_1041218129/article/details/61630981 javap 和 javac javap -help javac -hel ...
- weblogic 异常 com.rsa.jsafe.JSAFE_PaddingException: Could not perform unpadding: invalid pad byte.次异常怎么解决
问题 更改控制台密码后,服务重启失败,无法启动,报错如下: <-- 下午03时10分49秒 CST> <Info> <WebLogicServer> <BEA ...
- Java基础大家必看啊
写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java语言代码把思路体现出来. 学习 ...
- 怎样在model里面使用number_to_currency
ActiveSupport::NumberHelper.number_to_currency(amount, precision: 0)
- Textarea自动适用高度且无滚动条解决方案
今日的系统需要动态显示一项数据库里面的内容,该内容包含换行等格式字符,要求如实的反应在页面上. 最初解决办法是使用textarea控件,代码如下: <textarea style="b ...
- 《大话操作系统——做坚实的project实践派》(5)
有人说我不是仅仅会玩X86吗?我如今铁板钉钉的申明:我事实上兼通:ARM.IA-32.IA-32e.AMD64. 了解MIPS.但没做过MIPS由于确实没有对应的MIPS硬件平台.
- 算法笔记_068:Dijkstra算法简单介绍(Java)
目录 1 问题描述 2 解决方案 2.1 使用Dijkstra算法得到最短距离示例 2.2 具体编码 1 问题描述 何为Dijkstra算法? Dijkstra算法功能:给出加权连通图中一个顶点, ...
- 跨站请求伪造解决办法之——过滤referer
当然,referer也是可以伪造的,Http请求本身就没有不能伪造的东西. 所以本方法只能在一定程度上防止非法请求,仅供参考. 项目的web.xml中增加过滤器: <filter> < ...