iOS实战技术交流
以项目实战为基础,记录自己在iOS开发中的点点滴滴和研究。
小猿猪哥
这个作者很懒,什么都没留下…
展开
-
高德地图---天气搜索/逆向地理编码/定位
在《高德地图---线路规划查询/正向地理编码/地图覆盖物》这一篇里面本来想使用高德搜索的V3.0.0版本一直配置不好。今天又想起来弄这个了,去官方的论坛看了,知道了怎么使用了。这一篇主要是逆向地理编码和天气搜索。逆向地理编码:经纬度 ----> 详细地址。搜索天气需要什么?需要用户所在的城市名。那么些代码就可以这么一个思路写下来:用户位置得到用户经纬度 --- > 逆向地理编码获原创 2015-10-12 21:11:45 · 2908 阅读 · 0 评论 -
高德地图---线路规划查询/正向地理编码/地图覆盖物
本来想用高德地图的V3.0.0版本的搜索做天气搜索的,但是一直配置不好开发环境,最后就在原来工程里面使用V2.6.0的版本的地图做了这个简单的线路规划查询的例子。基本功能:输入起点和终点 地图显示出绿色的驾车路线。首先上效果图,都是真机iPhone4S的截图。直接贴上工程源码,代码的注释还比较详细。需要注意的就是线路的折线对象和大头针对象在新添加之前需要先移除。怎么操作,在代原创 2015-10-10 13:16:09 · 2301 阅读 · 0 评论 -
高德地图---显示/定位/POI搜索/大头针/气泡
接触高德地图也有一段时间了。但是也有很长一段时间没用了,手生了。闲来无事就再写写地图。好在高德的文档做的很详实,使用起来得心应手。今天就写了一点关于显示/定位/POI搜索/大头针/气泡的简单代码。难点就是搜索后大头针的问题。首先需要移除上一次搜索显示的大头针,再显示这一次需要显示大头针,不然屏幕显示的大头针会越来越多。这一点在官方的视频里面是有这些的。首先上一张效果图:这次使用原创 2015-10-08 18:47:22 · 7206 阅读 · 4 评论 -
CoreAnimation编程指南(三)动画层的内容
层的动画可以使我们很方便的创建复杂的动画,例如:改变图层的帧矩形的大小,改变它的位置在屏幕上,应用旋转变换,或改变其不透明度。改变层的一个属性可以进行简单的动画隐式或显式地根据您的需要。隐式的动画,使用默认的定时和动画属性进行动画,而显式动画需要你自己配置这些属性使用一个动画对象。所以,隐式动画是完美的情况下,你想做出改变,没有大量的代码和默认的时间很适合你。 简单的动画要改变层的属性,让核心动画原创 2016-07-10 15:40:13 · 4768 阅读 · 0 评论 -
CoreAnimation编程指南(二)设置层对象
层是核心动画的核心。层不仅管理引用程序的视觉内容,还提供修改样式和内容的选项。iOS应用的层是自动开启的,切始终启用,每个视图是由一层支持的。获取或修改视图所在层获取视图所在的层获取视图所在的层,我们可以调用+ (Class) layerClass;这个方法获取。 eg:UIView所在的层是CALayerNSLog(@"%@",[UIView layerClass]);// CALayer原创 2016-07-09 11:44:07 · 1820 阅读 · 0 评论 -
CoreAnimation编程指南(一)核心动画基础
什么是核心动画核心动画是一个图形渲染和动画基础设施可在iOS和OS X,你使用的动画的看法和你的应用程序的其他视觉元素。核心动画,大部分的工作需要画出每一帧的动画是为你做的。所有您需要做的就是配置一些动画参数(如起点和终点)告诉核心动画开始。核心动画不休息,把最实际的绘图工作了板载图形硬件加速渲染。这种自动图形加速的结果在高帧速率和流畅的动画,而不增加CPU和减慢你的应用。 如果你正在写的iOS应原创 2016-07-03 19:38:08 · 8611 阅读 · 1 评论 -
【iOS】MD5(加密)/AES/Base64加密和解密
MD5什么是MD5Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。MD5的特点1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。 2、容易计算:从原数据计算出MD5值很容易。原创 2016-06-27 20:53:05 · 9991 阅读 · 3 评论 -
iOS 添加ttf字体
在开发的过程中,有时Xcode提供的字体不能满足我们的需求,所以我们需要添加其他的第三方字体。 提供一个字体下载的地址:找字体。效果图第一页是Swift代码使用第三方字体,第二页是OC使用第三方字体。 集成过程1.下载.ttf字体先下载.ttf字体,把字体拖进项目。 2.在Info.plist里增加Fonts provided by application 或是在Info.plist的源码原创 2016-05-08 16:39:00 · 8111 阅读 · 0 评论 -
iOS 开发CocoaPods的使用
概要在iOS开发中,我们会用到很多第三方库。使用下载第三方库后,手动集成进来,需要配置项目的环境或是添加一些依赖库,使用起来直接明白过程但是麻烦,要是遇见第三方库要更新就更加麻烦了。但是CocoaPods的出现在某种程度上面解决了这个问题。安装Ruby环境搭建 我的电脑MF839版本是10.11.4,模式及集成了Ruby的。 查看Ruby版本:在vim中,输入如下命令 ruby -vhgdq原创 2016-05-05 19:24:11 · 2291 阅读 · 0 评论 -
【iOS】集成支付宝支付/银联支付/微信支付
前言前些时一个朋友做了 一个swift版本的Demo,集成了支付宝支付、银联支付和微信支付。swift版本–传送门但是在github上面问题他,怎么不搞一个OC版本的。后来我就自己做了一个。利用下班的时间,集成起来也还是很快的。OC版本–传送门。欢迎star欢迎Issues。基本思路1.在理清基本思路之前,我们需要知道三类支付的异同点。微信支付,需要在AppDelegate里面注册,在AppDel原创 2016-04-23 14:23:12 · 6992 阅读 · 0 评论 -
【iOS】UISearchBar修改右边取消按钮的方法
【iOS】UISearchBar修改右边取消按钮的方法在做APP的时候,很多APP都有搜索框。有时我们可以使用UITextFlied最定义,有时我们直接使用UISearchBar就可以了。但是在UISearchBar时怎么改变它右边的“取消”按钮为“搜索”或是“确定”就是一个问题了。 网上的做法:- (void)searchBarTextDidBeginEditing:(UISearchBar *原创 2016-04-10 11:13:11 · 14388 阅读 · 0 评论 -
【iOS】一种仿京东搜索历史记录的表格的实现(sqlite3的使用)
功能点准确的来说,不是仿制京东的,因为年前就是做好了这个功能。昨天看看京东,发现效果是一样的。年前公司APP的功能需求点:1.限制最多存储20条历史搜索数据(Demo为了演示,做的是5条)2.最新的历史数据在最上面3.数据不能重复4.历史数据支持点击,点击后发起搜索(Demo做的是弹出框展示)效果图在公司的项目中,由于整个项目使用的是FMDB,为了再原创 2016-04-10 10:52:42 · 8002 阅读 · 1 评论 -
【iOS】银联支付
这几天在工作之余看了下银联支付。基本按照官方的文档做就可以。支付流程银联的文档截图。官方流程说明:流程图说明:(1)用户在客户端中点击购买商品,客户端发起订单生成请求到商户后台;(2)商户后台收到订单生成请求后,按照《手机控件支付产品接口规范》组织并推送订单信息至银联后台;(3)银联后台接收订单信息并检查通过后,生成对应交易流水号(即TN),并回复至商户后台原创 2016-03-25 19:25:09 · 2119 阅读 · 0 评论 -
【iOS】点击按钮获取验证码控件
来了新公司,马上四个月了。前后参与了两款APP的开发。其中涉及到输入手机号获取验证码的页面,做了三个。第一次的时候,那个APP只有一个地方需要获取验证码,所以代码没有封装。没想到,年后做的另外一款APP,有两个界面,一个是刚刚年后来了做了,一个是在上周,项目打包的前几天。三次做这个都没有封装,每次都需去拷贝原来的代码,然后修改。今天就把这部分给简单地封装了一下。下面是效果图:(只有:获取验证码 那原创 2016-03-11 15:18:31 · 7883 阅读 · 0 评论 -
【iOS】BSXPCMessage received error for message: Connection interrupted的解决办法
今天在做二维码的生成和读取图片中得二维码。一直报错: BSXPCMessage received error for message: Connection interrupted大意是:链接中断时,消息接收错误。最后还是在stack overflow上面找到了答案。百度搜索就没有搜到中文的文章关于这个错误的。今天我就记录下来这个问题,供大家使用。读取图片中得二维码代码;- (原创 2016-03-04 15:09:33 · 9693 阅读 · 0 评论 -
【iOS】UIPickerView -- 地址选择器:省/市/区
由于项目的需要,需要对之前的地址选择器做改进。之前的地址选择器只能显示地址的省市区的名字等信息,不能显示其他ID类的信息。这次改进是使用新的数据源,关于数据源从后台获取和写入数据库我就不仔细说明了,代码里面有请自己查看(只有数据库部分)。这次也是第一次使用UIPickerView,刚开始还不知怎么入手,但是看着博客后,使用起来感觉和UITableView差不多,都是两个代理UIPickerView原创 2016-02-17 20:18:17 · 12420 阅读 · 1 评论 -
【iOS】Segue的页面跳转和传值
效果图在storyboard(故事板)中我们可以轻松的就把界面之间的跳转关系展示出来。但是在页面的跳转的时候就需要Segue了。首先来看看效果动画。工程结构图:页面的跳转方式在《【iOS】一种应用登录和退出跳转逻辑的实现》 有两种页面的跳转:pushViewController和presentViewController。那么使用Segue怎么实现呢?原创 2016-01-16 11:11:00 · 4519 阅读 · 0 评论 -
【iOS】百叶窗动画
上周一个朋友问我会不会做百叶窗动画效果。当时一看,感觉还不会。但是想想刚好前两天做了图片的切割,百叶窗是不是就是把一个图片切割之后,再每个一起做转动的动画效果呢?经过测试,发现就是这个思路就可以做出来。下面先看效果。代码部分就是在上一篇《【iOS】Quartz 2D图片压缩和裁剪》的基础上增加一些功能。所以关于图片裁剪部分的代码就不贴出来了。大家想看可以直接下载全部的工程代码。下载原创 2016-01-11 21:22:44 · 6831 阅读 · 0 评论 -
【iOS】Quartz 2D图片压缩和裁剪
最近做一个项目,需要使用到图片裁剪功能。之前 没使用过这个功能,经历了百度-测试-看官方文档。总算对这个东西有些印象了。为什么要看官方文档?如果只是拿过来就使用,不知道官方说的一些细节和流程,感觉也不会记得太清楚,以后再次使用需要注意的一些问题也不会知道。不废话了,上代码。首先新建一个工具类ToolUnit头文件里面的代码#import #import @interface Too原创 2016-01-10 22:04:15 · 934 阅读 · 0 评论 -
【iOS】Quartz 2D绘制直线/长方形/椭圆/圆形
一、基本概念Quartz 2D是Core Graphics中关键的一部分,它包含了各种函数、数据类型以及对象,可以在内存中直接绘制视图和图像。但是Quartz 2D仅限于二维绘图。Core Graphics是一个C语言API,所以名称都是以CG开头的函数都是C函数。二、坐标系统在iOS上面的坐标系统和传统的笛卡儿坐标系统是上下相反的。下面左图是笛卡儿坐标系统;右图是iOS系原创 2016-01-08 19:24:57 · 1500 阅读 · 0 评论 -
【iOS】数据库SQLite3的使用
前面有两篇《【iOS】数据库FMDB的使用》介绍了FMDB和一篇介绍了Core Data的使用《【iOS】数据库Core Data的使用》。这篇将要介绍SQLite3的使用。FMDB是SQLite3的一个封装,所以使用起来和两者的基本操作流程是一样的。一、关于SQLite3SQLite3在存储和检索大量数据方面非常有效。它能够对数据进行复杂的聚合,与使用对象执行这些操作相比,获得结的速原创 2016-01-04 19:53:54 · 1192 阅读 · 0 评论 -
【iOS】数据库Core Data的使用
在前面的博客《【iOS】数据库FMDB的使用》介绍了FMDB的使用,但是FMDB不是数据库。接下来需要介绍的core Data也不是数据库。一、core Data是什么?https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreData/index.html#//apple_ref/doc/uid/原创 2015-12-31 17:24:14 · 1019 阅读 · 0 评论 -
【iOS】判断硬件型号
// 是否是 iPhone#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)// 是否是 iPad#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)// 判断是否iPod touch#define原创 2015-12-30 09:02:46 · 849 阅读 · 0 评论 -
【iOS】数据库FMDB的使用(二)
上一篇《【iOS】数据库FMDB的使用(一)》中介绍了FMDB的基本使用。但是在项目一般一个数据库会在多个地方操作,为了避免冲突就需要多线程。FMDB也帮我们封装了多线程的方法。上一篇《【iOS】数据库FMDB的使用(一)》中说了需要导入多少个文件到项目中。但是没有导入FMDB.h这个文件,因为这个文件里面就是包含了几个头文件。多线程的时候我们需要导入蓝色的这个文件,但是为了方便我原创 2015-12-24 11:22:59 · 895 阅读 · 0 评论 -
【iOS】数据库FMDB的使用(一)
SQLite(http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库。iOS SDK 很早就支持了 SQLite,在使用时,只需要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件即可。但是,原生的 SQLite API 在使用上相当不友好,在使用时,非常不便。于是,开源社区中就出现了一系列将 SQLite API 进行封装的库原创 2015-12-23 17:22:08 · 2961 阅读 · 0 评论 -
【iOS】UITextField限制输入长度
一、需求前些时做了一个手机号码获取验证码的界面,需要限制输入框的输入长度是11位。还有一个需求就是在输入框输入的是11位字符的时候,获取验证码按钮可以点击且改变颜色,在输入框不是11位的时候,获取验证码按钮不可点击且又是另外一种颜色。这个demo采用的是输入长度限制是6位,使用一个色块代表按钮。输入框UITextField和色块是拖得控件。二、分析问题1.限制输入长度;2.原创 2015-12-21 21:09:06 · 1754 阅读 · 0 评论 -
【iOS】一种应用登录和退出跳转逻辑的实现
在APP中,都存在登录和退出操作。登录和退出再实现起来并不难。但是有些又是我们需要理清楚的。一、几个问题:1.从哪里跳转到登录页面来?2.登录后跳转到哪里去?3.退出登录后再跳转到哪里去?4.怎么知道用户是否已经登录了?在解决这些问题前,先看看我的一个demo的项目结构。二、demo结构主要分四个板块:设置用户是否登录(简化操作,采用模拟的操作)、收藏、关注原创 2015-12-20 22:07:47 · 7069 阅读 · 0 评论 -
【iOS】六种手势UIGestureRecognizer
iOS开发中一共有六种手势。但是他们都是继承UITapGestureRecognizer。在上一篇《iOS --- UIPanGestureRecognizer拖拽手势》已经介绍了一种慢速拖拽手势。这篇主要介绍剩下的五种手势。- (void)initView{ self.testImageView = [[UIImageView alloc] init]; self.t原创 2015-12-16 18:06:24 · 647 阅读 · 0 评论 -
【iOS】获取应用版本和语言
一.获取用用版本方式一:通过APPI获取这种方式需要使用的应用的ID号,从网络获取./** * 获取版本号 * * @param block 获取成功时,返回版本号 * @param err 网络错误时执行的回调 */+(void)getVersion:(strBlock)block err:(errBlock)err{ NSString *url = [原创 2015-12-14 11:46:23 · 1940 阅读 · 0 评论 -
【iOS】UITbableView中cell的单选状态和多选状态
在之前的一篇《iOS --- UITableView中section的展开和收起》我们介绍了UITableView中section的展开和收起。当时的处理思路是给每一行的section一个状态标记。在这一篇cell的单选也是才去的这样一种处理思路。思路:1.初始的时候给每一个cell一个状态标记 0,这些状态标记是存在一个数组里面的;2.当某个cell被点击后我们置这个cell的状态标原创 2015-12-06 17:16:18 · 1302 阅读 · 0 评论 -
【iOS】UITableView 动态确定cell的高度
最近在开发一个收货地址的页面。需要动态确定cell的高度。就是详细地址比较长的时候需要换行显示出来,详细地址有的长有的短,这就导致了cell的高度不一致。在《 iOS --- 根据文本内容确定文本框高度》里面我们已经介绍了一种确定文本的高度的方法,这里我们就来真正的使用一次。先看看效果图。代码部分采用的自定义的cell。代码部分不难,注意两个使用文本高度的地原创 2015-11-29 17:21:43 · 688 阅读 · 0 评论 -
【iOS】自定义导航栏(二)
在上一篇中《iOS --- 自定义导航栏(一)》我们自定义了导航栏上面的搜索栏。这一篇我们自定义导航栏右边的按钮。左边的按钮是一样配置。直接接着上一篇上代码截图好了。原创 2015-11-29 17:00:10 · 687 阅读 · 0 评论 -
【iOS】自定义导航栏(一)
才进了这家公司五天。第一天进来看了不到半天的代码,主管就分配任务要我写代码了,大半个月没敲代码了,项目都没看完,感觉有点压力。结果界面快做出来了,又换了一个项目,看第二个项目的代码,还是一样。瞬间无语了。没办法只能硬着头皮一点一点的写,一点一点的看原工程里面的代码。在写到导航栏上面的搜索栏的时候,按照之前的其他界面的搜索栏做的,显示样式一样。结果到了我的这个界面,搜索栏换了样式。不知道设计师怎原创 2015-11-22 10:59:24 · 763 阅读 · 0 评论 -
【iOS】NSURLSession断点下载
关于NSURLSession可以阅读这两篇文章:《iOS中利用NSURLSession进行文件断点下载》《实战iOS7之NSURLSession》者两篇里面也都有实例。在我的上一篇《iOS --- AFNetworking断点下载》介绍的使用AFNetworking进行断点下载。现在做了一个关于NSURLSession的断点下载,个人感觉使用AFNetworking操作原创 2015-10-28 15:12:44 · 1086 阅读 · 0 评论 -
【iOS】AFNetworking断点下载
AFNetworking也使用了好长一段时间了,一直都是使用它做一些简单的网路请求,比如GET请求和POST请求。但是真正的数据的下载和上传都没使用过。今天就暂时先写下一个数据的断点下载的Demo,后续有条件在补充一个断点续传的例子。关于AFNetworking的断点下载的操作难度不大,知道调用什么方法什么类就就好了。也许这就是苹果一个把iOS开发做的流程化和简单化的原因吧,虽说AFNetwo原创 2015-10-28 11:05:05 · 1421 阅读 · 5 评论 -
【iOS】UITableView的上拉加载更多和下拉刷新原理
在iOS的实际项目中,我们会使用一些第三方库。其中使用较为频繁的一个就是上拉加载更多下拉刷新类的。比如MJRefresh和JHRefresh。一般小公司都是使用就够了,可以满足我们的项目需求即可。但是作为我们程序员,我们还不能这样就结束了。从提升自己的角度,我们需要看大量的源码,需要知道第三方的实现原理。我就简单的写下我对UITableView的上拉加载更多和下拉刷新原理的理解。下面会列出的代码还原创 2015-10-27 14:08:31 · 8246 阅读 · 0 评论 -
【iOS】UITableView中section的展开和收起
手机QQ大家都玩过。我们可以对好友进行分组,点击分组可以展开查看里面的成员,再次点击就可以收起分组。那么这个是怎么实现的?之前做项目的时候也使用过,最近有时间整理,就把之前是怎么操作的记录下来。在写之前也是百度了一下,发现网上的资源也不是很多,今天就附带截图和源码展现出来。如有需要完善的地方或是新的思路的,我们可以一起交流。再看博客之前,请大家再去玩玩自己的手机QQ,明确一下自己的问题。带着目原创 2015-10-24 12:51:15 · 11532 阅读 · 0 评论 -
【iOS】系统地图MapKit服务
在上两篇《高德地图---线路规划查询/正向地理编码/地图覆盖物》和《高德地图---天气搜索/逆向地理编码/定位》中介绍了高德地图的正向地理编码和逆向地理编码及其他功能。总体来说简单使用高德地图还不算复杂。iOS系统自带也是有定位服务的,就百度研究了一下,在大中华局域网内要谷歌还要翻墙,但是简单的使用一下百度也就基本够用了。这次的使用主要涉及到MapKit的四个功能点:定位、方向、正向地理编码、原创 2015-10-22 11:10:00 · 896 阅读 · 1 评论 -
【iOS】根据文本内容确定文本框高度
第三方库TQRichTextView https://github.com/TinyQ/TQRichTextView 是一个图文混排的第三方库,可以根据文本内容设置文本框的高度。系统也自带了一种方法可以根据文本的内容设置文本的高度。 UILabel *testLabel = [UILabel new]; testLabel.backgroundColor = [UIColor grayC原创 2015-10-17 16:00:37 · 1673 阅读 · 0 评论 -
【iOS】GKPeerPickerController蓝牙设备通讯
写在前面今天早上起来突然想起自己以前玩电子的时候,用过蓝牙设备,哪个时候使用的安卓机和单片机控制的蓝牙连接,那么,能不能使用iPhone手机和单片机连接呢?再想想现在火热的智能家居,很多的设备和我们的手机的链接主要就是蓝牙和wifi。特别是现在的蓝牙4.0的出现,使得蓝牙更是火热起来。想法不能只停留在大脑,需要实践。问题来了。之前没有接触过iPhone的蓝牙设备的开发,怎么快速入门原创 2015-10-16 11:40:28 · 1084 阅读 · 0 评论