iOS学习笔记系列
文章平均质量分 76
iOS开发学习笔记,包含基本原理讲解及每篇附上的示例程序代码!帮助iOS开发初学者一步一步进阶,分享最新的学习心得和体会!
唐韧_Ryan
前非著名程序员,现不知名产品人。微信公众号:唐韧
展开
-
iOS学习笔记47——图片异步加载之EGOImageLoading
上次在《iOS学习笔记46——图片异步加载之SDWebImage》中介绍过一个开源的图片异步加载库,今天来介绍另外一个功能类似的EGOImageLoading,看名字知道,之前的一篇学习笔记《IOS学习笔记34—EGOTableViewPullRefresh实现下拉刷新》中介绍的开源项目是同一个作者。原创 2013-07-12 16:59:34 · 10691 阅读 · 10 评论 -
iOS学习笔记46——图片异步加载之SDWebImage
在开发中经常会遇到列表加载的功能,其中大部分都包括图片列表加载,但移动设备本身内存有限,而大量图片加载又很耗内存。今天主要就介绍一个第三方图片异步加载库SDWebImage,Github地址为:https://github.com/rs/SDWebImage,这个库主要实现了为UIImageView添加一个类别方法,让使用者使用图片异步加载就好像直接为UIImageView设置image一样,使用原创 2013-07-07 14:43:51 · 30145 阅读 · 5 评论 -
iOS学习笔记45—本地通知UILocalNotification
在iOS中有两类信息提示推送方式,一类是远程服务器推送(APNS),之前有笔记中介绍过APNS:http://blog.csdn.net/tangren03/article/details/8482259,还有一类就是本地通知UILocalNotification,今天就简要的记录一下UILocalNotification的使用,代码里见注释UILocalNotification *not原创 2013-05-11 14:17:44 · 10222 阅读 · 3 评论 -
iOS学习笔记44——实现滑动菜单SlidingMenu
左右滑动切换出菜单或子界面现在被越来越多的用在了各种移动应用中,例如Facebook等等,今天借助Github上John的项目实现此功能,先上效果图: 操作上,可以点击顶部的菜单按钮呼出左右隐藏视图,也可以滑动主视图进行呼出!实现上:1.到之前连接中下载或Clone工程到本地,我们需要的是里面的名为SWRevealViewCon原创 2013-04-23 15:56:48 · 11684 阅读 · 5 评论 -
iOS学习笔记43——iOS6下自定义UI控件外观效果
尽管iOS原生的UI控件就已经有很不错的显示效果,但是App开发者仍然希望自己的产品与众不同,所以自定义UI外观成了每个App产品开发必做之事。今天就来做一个在iOS6下实现自定义UI的demo,内容及Demo来源于国外iOS博客raywenderlich,先看看美化前后效果差别(左边为美化前,右边为美化后): 整个原创 2013-04-05 16:33:29 · 10796 阅读 · 4 评论 -
iOS学习笔记42—利用dispatch_once创建单例
在之前有一篇学习笔记中,记载了一篇如何在OC中实现单例的文章:《IOS学习笔记4—Objective C—创建单例》自苹果引入了Grand Central Dispatch (GCD)(Mac OS 10.6和iOS4.0)后,创建单例又有了新的方法,那就是使用dispatch_once函数,当然,随着演进的进行,还会有更多的更好的方法出现。今天就来简要介绍下如何利用dispatch_once原创 2013-02-28 16:02:48 · 38305 阅读 · 4 评论 -
IOS学习笔记41——苹果推送机制APNs(二)
上一篇介绍了一下APNs的基本原理和处理流程,通过介绍,对APNs的机制有了大致的了解后,我们就来看看如何把APNS服务集成到我们自己的项目中来,首先登陆我们的Apple Developer后台为将要使用推送服务的App新建一个App ID,如下图,点击新建后输入基本信息:新建完毕后找到我们刚申请的App ID,把“Enable for Apple Push Notificat原创 2013-01-25 07:48:43 · 12077 阅读 · 6 评论 -
IOS学习笔记40——苹果推送机制APNs(一)
推送是解决轮询所造成的流量消耗和电量消耗的一个比较好的解决方案,在Android上,虽然Google提供了GCM(之前为C2DM),但在国内基本等于没用,各大Android应用基本都自己架设推送Server或是使用第三方推送平台,例如新浪微博使用第三方推送平台“个推”(非广告)。今天要学习的是苹果提供的推送服务APNs(Apple Push Notification services)基本原理原创 2013-01-08 20:29:42 · 34659 阅读 · 6 评论 -
IOS学习笔记39——拍照、从相册选图并对图片进行裁剪
2013第一篇,大家新年快乐!感谢一直关注我博客的同学们,有你们的支持我才有动力越做越好!有阵子没写博客了,因为前阵子着实比较忙,没时间整理,今天主要实现一个小Demo,我们知道在Instagram或Path上,头像都是正方形的,得到这种头像图片肯定要对原图进行截取,今天抽时间整理了下,先记录如下!早前写过一篇《IOS学习笔记22—文件操作(NSFileManager)结合相册小例子》,随着iOS原创 2013-01-05 16:13:58 · 38033 阅读 · 9 评论 -
IOS学习笔记38——NSJSONSerialization使用
在之前的学习笔记《IOS学习笔记33—XML解析之KissXML的使用》中介绍了如何解析XML格式的数据,今天简要介绍下如何解析JSON格式的数据,JSON数据结构以其轻量化的结构体和良好的可读性被越来越广泛的运用,特别在移动开发上,手机的流量是宝贵资源,更要求使用轻量级的数据格式进行数据传输。关于在iOS平台上进行JSON解析,已经有很多第三方的开源项目,比如SBJson、JSONFramwor原创 2012-12-18 08:46:46 · 25663 阅读 · 2 评论 -
IOS学习笔记37——ViewController生命周期详解
在我之前的学习笔记中讨论过ViewController,过了这么久,对它也有了新的认识和体会,ViewController是我们在开发过程中碰到最多的朋友,今天就来好好认识一下它。ViewController是IOS开发中MVC模式中的C,ViewController是view的controller,ViewController的职责主要包括管理内部各个view的加载显示和卸载,同时负责与其他Vi原创 2012-12-06 06:32:57 · 48560 阅读 · 8 评论 -
IOS学习笔记36—解决键盘遮挡输入框(UITextField)问题
在IOS开发中,如果输入框(UITextFiled)在界面的下半部分,那么,当键盘出现的时候,势必会挡住输入框,就下下面这样: 这样的效果造成了很不好的用户体验,在这一点上,Android或许就做的好一点,在Android中,只要有输入框的地方,不管EditTex原创 2012-11-20 14:37:40 · 19498 阅读 · 7 评论 -
IOS学习笔记35—Xcode4.5后国际化的使用
前些天升级到Xcode4.5,现在正在用Xcode4.5+IOS6开发项目,当使用国际化时,遇到了一点问题,之前版本Xcode上新建Localizable.strings后,添加语言的“+”号不见了,找了半天无果,自己研究了下,后来在Stackoverflow上找到了解决方案,原来Apple把这个“+”号换地方了。下面来看看如何使用。首先新建一个名为Localizable.string原创 2012-10-17 14:16:32 · 10179 阅读 · 0 评论 -
IOS学习笔记34—EGOTableViewPullRefresh实现下拉刷新
移动应用开发中有这么一种场景,就是在列表中显示的数据刷新,有点击刷新按钮刷新的,也有现在最流行的由Twitter首先推出的下拉刷新功能,在IOS中,使用下拉刷新更新UITableView中的数据也用的非常多,最典型的就是新浪微博的客户端,使用下拉的形式来更新最新的微博信息。在Android开发中,有相应的开源项目来实现下拉刷新,这里主要讲如何在IOS中实现下拉刷新的功能,我们用到一个EGOTa原创 2012-09-04 10:51:27 · 27370 阅读 · 8 评论 -
IOS学习笔记33—XML解析之KissXML的使用
IOS中有关XML的解析有很多方法,之前在使用GDataXML解析XML文档一文中说明了如何使用Google提供的XML解析类来解析XML文件,今天使用另一个开源项目KissXML来解析XML文件,引入开源项目及配置项目的方式和之前那篇文章中一样,到KissXML源码下载源码并按照之前文章中提到的方式配置好即可。配置完毕后,在AppDelegate.m(我建的是一个Empty工程)中引入如下头原创 2012-08-30 17:53:39 · 17616 阅读 · 2 评论 -
IOS学习笔记32—使用Storyboard实现复杂界面
Storyboard是IOS5以后新增的内容,从名字上看,是以故事面板的形式来展现界面间的逻辑关系,Storyboard的功能很强大,今天就简要介绍Storyboard的基本使用,界面间的关系,以及如何使用xib和Storyboard共同使用的情况。首先新建一个Empty工程,并新建一个Storyboard,我命名为MainStoryboard,以下是完整的工程目录结构:打开Mai原创 2012-08-29 11:04:52 · 29058 阅读 · 4 评论 -
IOS学习笔记31—两个ViewController间传值(二)
在上一篇 两个ViewController间传值(一)中说明了如何从A传值到B,这次要讲的是如何从A进入B,在B输入值后回传给A,这类似于Android中的利用Activity的onActivityResult回调方法实现两个Activity之间的值传递,那么在IOS中如何实现这个功能呢,答案是使用Delegate(委托协议)。首先来看看工程结构图:其中有两个ViewControl原创 2012-08-28 10:51:51 · 31127 阅读 · 15 评论 -
IOS学习笔记30—两个ViewController间传值(一)
IOS中,在两个ViewController之间传值有多种方式,这里学习其中一种,利用临时变量在两个ViewController之间传值,这可能不是最好的传值方式,但是也是一种选择。首先看看工程结构:其中ViewController是第一个界面,SecondViewController是第二个界面,UserEntity为一个实体对象,用来作为在两个界面间传值的媒介。接下来看看最原创 2012-08-27 21:23:55 · 43768 阅读 · 4 评论 -
IOS学习笔记29—提示框第三方库之MBProgressHUD
MBProgressHUD是一个开源项目,实现了很多种样式的提示框,使用上简单、方便,并且可以对显示的内容进行自定义,功能很强大,很多项目中都有使用到。到GitHub上可以下载到项目源码https://github.com/jdg/MBProgressHUD,下载下来后直接把MBProgressHUD.h和MBProgressHUD.m拖入工程中就行,别忘了选择拷贝到工程。完了在需要使用的地方导入原创 2012-08-17 13:59:37 · 72345 阅读 · 20 评论 -
IOS学习笔记28—SQLite3第三方库之FMDB
SQLite是一种小型的轻量级的关系型数据库,在移动设备上使用是非常好的选择,无论是Android还是IOS,都内置了SQLite数据库,现在的版本都是SQLite3。在IOS中使用SQLite如果使用SDK提供的方法,特别麻烦也不利于理解和使用,在之前的http://blog.csdn.net/tangren03/article/details/7781930文章中就是使用IOS的SDK自带的S原创 2012-08-17 00:06:51 · 20660 阅读 · 23 评论 -
IOS学习笔记27—使用GDataXML解析XML文档
在IOS平台上进行XML文档的解析有很多种方法,在SDK里面有自带的解析方法,但是大多情况下都倾向于用第三方的库,原因是解析效率更高、使用上更方便,关于IOS平台各种解析XML库的优缺点分析,可以看下这篇文章:http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project这里主要原创 2012-08-15 11:11:17 · 33632 阅读 · 13 评论 -
IOS学习笔记26—HTTP操作之ASIHTTPRequest(二)
利用ASIHTTPRequest也可以向服务器提交请求参数,今天就做一个登录的例子,客户端发送XML请求,然后得到服务端的响应,响应的结果是返回XML字符串。直接上代码吧,代码中有详细注释。首先在.h文件中做如下声明:#import @interface ViewController : UIViewController@property (retain,nonatomic)原创 2012-08-13 15:50:12 · 11192 阅读 · 10 评论 -
IOS学习笔记25—HTTP操作之ASIHTTPRequest(一)
ASIHTTPRequest是一个第三方开源项目,在现在的IOS应用中多使用到这个开源类库来提供网络操作,相比于SDK提供的网络操作类库,ASIHTTPRequest使用上更加方便、效率更高,同时功能也非常强大。这是ASIHttpRequest的官网:http://allseeing-i.com/ASIHTTPRequest/以下是官方对ASIHttpRequest的解释:What原创 2012-08-12 10:04:39 · 9789 阅读 · 3 评论 -
IOS学习笔记24—block
Block是IOS4以后引进的新语法,用来实现匿名函数的特性,有点类似于Java中的匿名内部类但又有一点差别。Apple官方文档对block的解释是:A block is an anonymous inline collection of code, and sometimes also called a "closure".意思就是block是一个匿名的内联代码集合,也被称为“闭包”(closu原创 2012-08-10 15:23:42 · 6262 阅读 · 0 评论 -
IOS学习笔记23—多线程之NSThread、NSOperation、NSInvocationOperation
IOS中支持多线程操作,使用NSThread和NSInvocationOperation可以完成多线程功能。多线程的功能主要是为了防止阻塞主线程的工作(主要是UI操作和显示),使一些耗时的的操作在另一个线程中完成,完成后可以通知主线程来进行UI上的更新。多线程功能在实际开发中用的很多,最典型的就是网络请求和处理操作,下面主要来讨论一下Cocoa中的NSThread和NSInvocationOper原创 2012-08-08 12:39:09 · 7944 阅读 · 1 评论 -
IOS学习笔记22—文件操作(NSFileManager)结合相册小例子
这个示例程序主要用到了IOS中的UIImageView、UIImagePickerViewController、UIImage、NSFileManager等知识,结合这些知识构成一个小的应用程序,主要功能是对相册图片进行读取、存储到指定文件夹、从指定文件夹读取出来。这方面的知识在正式项目中用的是比较多的。做Android开发中,经常会使用到将图片保存到SD卡和从SD卡读取图片的操作,相比于Andr原创 2012-08-04 21:52:27 · 15139 阅读 · 17 评论 -
IOS学习笔记21—沙盒机制(SandBox)
IOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容。所有的非代码文件都保存在这个地方,比如图片、声音、属性列表和文本文件等。1.每个应用程序都在自己的沙盒内2.不能随意跨越自己的沙盒去访问别的应用程序沙盒的内容3.应用程序向外请求或接收数据都需要经过权限认证查看模拟器的沙盒文件夹在Mac电脑上的原创 2012-08-03 11:32:30 · 7287 阅读 · 2 评论 -
IOS学习笔记20—UIActivityIndicatorView、UIProgressView
UIActivityIndicatorView和UIProgressView都继承自UIView,所以他们可以附属在其他视图上。UIActivityIndicatorView是一个进度提示器,显示一个小圆圈在转动,主要用在一些耗时操作的提示上,比如网络请求;UIProgressView是一个进度提示条,不过它可以显示一个进度,可以告知用户操作已经进行了多少,这二者的目的都是为了在应用程序有耗时操作原创 2012-08-01 12:28:57 · 12556 阅读 · 0 评论 -
IOS学习笔记19—UIImagePickerController(图像选取器)
UIImagePickerController是一种导航控制器,使用它,用户可以打开系统的图片选取器或者打开相机进行拍照。实现协议UIImagePickerDelegate中定义的委托方法可以对选定后的结果进行操作,或是没有选择取消的操作。UIImagePickerController有三个图片源:UIImagePickerControllerSourceTypePhotoLibr原创 2012-07-31 12:58:28 · 9752 阅读 · 0 评论 -
IOS学习笔记18—UIImageView
以前我们使用过UIImage来加载图片,而UIImageView是在界面上显示图片的一个控件,在UIImageView中显示图片的话应该首先把图片加载到UIImage中,然后通过其他方式使用该UIImage。以下说明了四种常用的加载UIImage的方法:imageNamed:使用应用程序束中的一个文件来创建,IOS4以后的版本中可以省略图片扩展名;imageWithCGImage:使用Qu原创 2012-07-30 10:46:04 · 36763 阅读 · 0 评论 -
IOS学习笔记17——Core Location
IOS支持三种检测当前位置的方式:手机基站、Wi-Fi、和GPS,其中GPS是经度最高的,同时也是最耗费手机电量的。一般情况下在室内是无法通过GPS获取位置信息的,通过Wi-Fi获取位置的原理是通过网络提供商的IP地址信息来获取位置,经度不是很高,最后是通过手机基站获取位置,手机开机后会连接附近的基站塔获取信号,通过基站可以得到手机所在的位置信息,基站越密集,所获取的位置信息经度就越高。原创 2012-07-29 10:44:52 · 9830 阅读 · 0 评论 -
IOS学习笔记16——Core Data
Core Data是一个功能强大的层,位于SQLite数据库之上,它避免了SQL的复杂性,能让我们以更自然的方式与数据库进行交互。Core Data将数据库行转换为OC对象(托管对象)来实现,这样无需任何SQL知识就能操作他们。Core Data位于MVC设计模式中的模型层,一般需要在设备上存储结构化数据时,考虑使用SQLite或是序列化等方法,而Core Data是这两种方法的混合体,并增加原创 2012-07-27 16:37:50 · 45953 阅读 · 8 评论 -
IOS学习笔记15——SQLite数据库
SQLite是MySQL的简化版,更多的运用与移动设备或小型设备上。SQLite的优点是具有可移植性,它不需要服务器就能运行,同时,它也存在一些缺陷,首先,没有提供简单的数据库创建方式,必须手工创建数据库,其次,SQLite没有面向对象接口,必须使用依赖于C语言代码的API。相对于OC,这套API既不那么优雅,也更难使用。当相比于用文件进行存储,还是更推荐使用SQLite进行数据存储。原创 2012-07-24 19:42:19 · 8924 阅读 · 6 评论 -
IOS学习笔记14—用户首选项NSUserDefaults
用户首选项是用来保存和记录用户在操作应用的过程做做出的一些选择或设置。类似Android开发中的SharedPreference,可以存储一些数据,但基本都是简单类型的数据,主要作用都是存储一些用户设置数据,比如是否是首次登陆,就可以设置一个布尔类型的变量,设值为true或false。NSUserDefaults的几个重要方法:standardUserDefaults:创建共享默认原创 2012-07-20 20:19:30 · 7419 阅读 · 1 评论 -
IOS学习笔记13—UINavigationController
导航控制器UINavigationController控制一系列的UIViewController,他们组成一个层次结构,每一个ViewController都在这个层次结构中上下移动,组织方式是栈形式。每个UIViewController都有相关联的UINavigationItem,后者处于活动状态时将位于UINavigationBar中,每个UINavigationItem都可能包含一个或多原创 2012-07-18 20:37:36 · 4698 阅读 · 4 评论 -
IOS学习笔记12—UITabBarController
UITabBarController是选项卡栏导航控制器,显示效果是在页面底部有多个选项卡,通过点击不同选项卡可以在不同的ViewController之间进行切换。这种对象的层次结构至少包含6个对象:一个UITabBarController;两个UIViewController;一个UITabBar;两个UITabBarItem;UITabBarContro原创 2012-07-18 11:27:41 · 8299 阅读 · 3 评论 -
IOS学习笔记11—IOS通知中心
IOS中还有一类产生事件的功能,那就是通知。通过通知,可以在一定的条件下触发响应的事件。类似于Android中的广播机制(Broadcase Receiver),接收到通知(广播)后,便可执行指定的方法。通过NSNotificationCenter获取通知对象,注册并使用通知。下面 以一个例子为例:UIApplication *application = [UIApplicat原创 2012-07-17 22:15:23 · 7847 阅读 · 1 评论 -
IOS学习笔记10—UIControl对象详解
上篇讲到了UITouch和UIEvent事件,简单回顾一下,UIEvent是一系列UITouch的集合,在IOS中负责响应触摸事件。另外还提到了响应者链的概念,在IOS中,所有事件有一个最先响应者,事件可以沿着响应者链向下传递。接下来是UIControl对象UIControl是UIView的子类,当然也是UIResponder的子类。UIControl是诸如UIButton、UIS原创 2012-07-17 11:22:06 · 15505 阅读 · 2 评论 -
IOS学习笔记9—IOS触摸事件监听和操作
在IOS开发中会遇到各种操作事件,通过程序可以对这些事件做出响应。首先,当发生事件响应时,必须知道由谁来响应事件。在IOS中,由响应者链来对事件进行响应,所有事件响应的类都是UIResponder的子类,响应者链是一个由不同对象组成的层次结构,其中的每个对象将依次获得响应事件消息的机会。当发生事件时,事件首先被发送给第一响应者,第一响应者往往是事件发生的视图,也就是用户触摸屏幕的地方。事件将沿原创 2012-07-16 20:15:26 · 17853 阅读 · 3 评论 -
IOS学习笔记8—UITableViewController
UITableViewController是IOS开发中一个比较重要的试图控制器,是集成了UITableView视图的控制器,在实际开发中经常用到,功能非常强大,可定制性也很高,下面从简单的使用和自定义Cell以及事件响应等方面来使用。1.首先创建一个Single View Project,命名为UITableViewControllerTest。打开ViewControlle原创 2012-07-15 18:13:05 · 27421 阅读 · 11 评论