摘要: 一、iOS应用数据存取的常用方式XML属性列表——PListNSKeyedArchiver归档Preference(偏好设置)SQLite3CoreData二、CoreData简介CoreData是iOSSDK里的一个很强大的框架,允许程序员以面向对象的方式储存和管理数据。使用CoreData框架,程序员可以很轻松有效地通过面向对象的接口管理数据CoreData框架提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite3数据库文件中,也能够将保存在数据库中的数据还原成OC对象在数据操作过程中,无需编写任何SQL语句要使用CoreData,需要导入CoreData框 阅读全文
posted @ 2014-02-10 22:26 Rynn 阅读(879) 评论(0) 推荐(0) 编辑
摘要: 一、iOS应用数据存取的常用方式XML属性列表——PListNSKeyedArchiver归档Preference(偏好设置)SQLite3CoreData(以面向对象的方式操作数据库SQLite)二、数据库简介(文件)数据库(Database)是按照数据结构来组织、存储和管理数据的仓库数据库的种类:关系型数据库(主流)对象型数据库文档型数据库(LotusNotes)主流数据库PC端:DB2、Oracle、Sybase、MySQL、SQLServer嵌入式\客户端:SQLite三、数据库的基本概念数据库的存储结构跟excel类似表(table)记录(row),每行都有很多个字段字段(colum 阅读全文
posted @ 2014-02-09 22:11 Rynn 阅读(1028) 评论(0) 推荐(1) 编辑
摘要: 一、内存的重要性程序是否可用的最根本的制约因素。十分影响用户体验。程序的crash有很多情况都是内存的原因。二、iOS平台内存警告机制iOS系统不支持虚拟内存,一旦出现内存不足的情况,iOS系统会通知所有app,无论是前台的还是挂起的,都会收到memorywarning的通知,一旦app收到memorywarning的通知就应该回收占用内存较大的对象。内存警告测试方法:iOS模拟器->硬件->模拟内存警告。iOS6废除了viewDidUnload函数,所以要把之前viewDidUnload中做的事情放在didReceiveMemoryWarning中三、静态分析工具——Analyz 阅读全文
posted @ 2014-02-08 22:07 Rynn 阅读(1419) 评论(2) 推荐(1) 编辑
摘要: 一、什么是库?库是共享程序代码的方式,一般分为静态库和动态库。二、静态库与动态库的区别?静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。三、iOS里静态库形式?.a和.framework四、iOS里动态库形式?.dylib和.framework五、framework为什么既是静态库又是动态库?系统的.framework是动态库,我们自己建立的.framework是静态库。六、a与.framework有什么区别?.a是一个纯二进制文件,.framework中除了有二进制文 阅读全文
posted @ 2014-02-07 22:10 Rynn 阅读(1623) 评论(0) 推荐(4) 编辑
摘要: 单元测试(unittesting):对软件中最小可测试单元进行检查和验证。一般面向过程的语言中,基本单元为函数,面向对象的语言中,基本单元通常是类,其实对于一个手机上的app来说基本单元也可以是一个UI页面。平时我们写了一个函数,执行以下看是否正常工作,也属于单元测试。测试用例(testcase):对测试任务的描述,体现测试方案、方法、技术和策略。内容包括测试目标、测试环境、输入数据、输出数据、测试步骤、预期结果、测试脚本等。它是一种检验行为,便于我们写出高质量代码。它是一种设计行为,有利于我们编程能力的提高。它是一种文档编写行为,让我们的程序有据可依。Xcode内置了OCUnit单元测试框架 阅读全文
posted @ 2014-01-24 18:54 Rynn 阅读(981) 评论(0) 推荐(0) 编辑
摘要: 一、需求分析点击照片从当前照片位置动画弹出新的视图控制器显示选中的照片,新的视图控制器为全屏显示,背景为黑色,再次点击照片动画缩小至当前选中的照片位置,双击放大照片,如果已经放大则缩小,在新的视图控制器中滑动手指,可以在照片之间切换,当前显示的照片支持手指捏合手势,放大或缩小照片,照片切换时,在照片的下方显示标签提示当前显示的照片数量及照片总数。性能优化:点击照片从当前照片位置动画弹出新的视图控制器显示选中的照片(非modal、非push)新的视图控制器为全屏显示,背景为黑色(修改UIApplication的状态栏),再次点击照片动画缩小至当前选中的照片位置(照片视图需要与父视图中的UIIma 阅读全文
posted @ 2014-01-23 23:00 Rynn 阅读(610) 评论(1) 推荐(0) 编辑
摘要: 一、瀑布流简介瀑布流,又称瀑布流式布局。是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部。最早采用此布局的网站是Pinterest,逐渐在国内流行开来。国内大多数清新站基本为这类风格二、瀑布流特点l琳琅满目:整版以图片为主,大小不一的图片按照一定的规律排列l唯美:图片的风格以唯美的图片为主l操作简单:在浏览网站的时候只需要轻轻滑动一下鼠标滚轮,一切的美妙的图片精彩便可呈现在你面前三、瀑布流应用瀑布流对于图片的展现,是高效而具有吸引力的,用户一眼扫过的快速阅读模式可以在短时间内获得更多的信息量,而瀑布流里懒加载模式又避 阅读全文
posted @ 2014-01-22 23:31 Rynn 阅读(1161) 评论(0) 推荐(0) 编辑
摘要: 使用URLSession所有的网络访问都是有缓存的,缓存文件自动保存在tmp文件夹中,URLSession本身实现的时候,就是少量多次的!l使用defaultSessionConfiguration配置建立的会话退出到首页时,任务会被自动挂起重新进入应用时,任务会自动继续l使用backgroundSessionConfiguration配置建立的会话在退出首页时,后台的下载任务仍然进行中,一直到下载完成重新进入首页时,才会触发代理方法,拷贝文件如果没有下载完成,重新进入应用时,下载任务会自动继续l对于一次性数据访问,仍然可以使用NSURLConnection!l1.NSURLl2.NSURLR 阅读全文
posted @ 2014-01-21 22:36 Rynn 阅读(516) 评论(0) 推荐(0) 编辑
摘要: 一、iOS网络层次结构基于iOS提供API实现上传文件和断点续传的思路常用iOS第三方网路框架简介AFNetworking(AFN)ASIHTTPRequest(ASI)另外一个常用框架SSZipArchive二、iOS网络编程层次结构Cocoa层(NSURL,Bonjour,GameKit,WebKit)CoreFoundation层(基于C的CFNetwork和CFNetServices)OS层(基于C的BSDsocket)三、iOS网络编程层次结构概述Cocoa层:是最上层的基于OC的API,比如URL访问,NSStream,Bonjour,GameKit等,这是大多数情况下我们常用的A 阅读全文
posted @ 2014-01-20 23:13 Rynn 阅读(2246) 评论(0) 推荐(0) 编辑
摘要: 一、HTML&XMLHTML是用来描述网页的一种语言HTML指的是超文本标记语言(HyperTextMarkupLanguage)HTML不是一种编程语言,而是一种标记语言(markuplanguage)HTML被设计用来显示数据HTML5是下一代的HTML增加了用于绘画的canvas元素用于媒介回放的video和audio元素等等XMLXML是一种标记语言,很类似HTMLXML的设计宗旨是传输和存储数据,而非显示数据二、XML&JSON简介JSON作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络数据的通用格式基于JavaScript的一个子集易读性略差,编码手写难度 阅读全文
posted @ 2014-01-19 23:19 Rynn 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 一、播放视频iOS提供了叫做MPMoviePlayerController、MPMoviePlayerViewController的两个类,可以用来轻松播放视频YouTobe就是用MPMoviePlayerController实现的MPMoviePlayerViewController只能全屏播放视频上述两个类都定义在了MediaPlayer框架中二、MPMoviePlayerController支持的格式MPMoviePlayerController继承自NSObject,它内部有个view用来展示视频内容,添加其他控制器的view上面即可显示MPMoviePlayerController可 阅读全文
posted @ 2014-01-19 23:18 Rynn 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 一、UIWebView简介是iOS内置的浏览器控件,可以浏览网页、打开文档等能够加载html/htm、pdf、docx、txt等格式的文件系统自带的Safari浏览器就是通过UIWebView实现的二、关于MIMEtypeMIME的英文全称是“MultipurposeInternetMailExtensions”多用途互联网邮件扩展,是一个互联网标准,最早应用于电子邮件系统,后来应用到浏览器服务器通过说明多媒体数据的MIME类型,告诉浏览器发送的多媒体数据的类型,从而让浏览器知道接收到的信息哪些是MP3文件,哪些是Shockwave文件等等服务器将MIME标志符放入传送的数据中告诉浏览器使用哪 阅读全文
posted @ 2014-01-18 22:44 Rynn 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 一、网络访问的四个步骤l第一步:确定地址URLl第二步:建立请求l第三步:建立并启动连接l第四步:连接完成,处理结果备注:URL,统一资源定位符(URL,英语UniformResourceLocator的缩写)也被称为网页地址,是因特网上标准的资源的地址。iOS中资源地址一般都是使用NSURL描述的,包括:网页、本地文件、音频、视频、电话、短信等二、iOS网络处理常用类lNSURL(地址)请求地址lNSURLRequest(请求,GET请求使用)保存需要传送给Web服务器的全部数据:一个NSURL对象缓存策略等待Web服务器响应的最长时间请求头(在iOS开发中,系统已经自动处理,程序员不需要考 阅读全文
posted @ 2014-01-18 22:42 Rynn 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 一、多线程的应用l充分发挥多核处理器的优势,并发(同时执行)执行任务让系统运行的更快、更流畅二、进程与线程概念l一个运行的程序就是一个进程或者叫做一个任务l一个进程至少包含一个线程,线程是程序的执行流liOS程序启动时,在创建一个进程的同时,会开始运行一个线程,该线程被称为主线程l主线程是其他线程最终的父线程,所有界面的显示操作必须在主线程进行!!!l后台线程无法更新UI界面和响应用户点击事件l系统中的每一个进程都有自己独立的虚拟内存空间,而同一个进程中的多个线程则共用进程的内存空间l每创建一个新的线程,都会消耗一定内存和CPU时间l当多个线程对同一个资源出现争夺的时候需要注意线程安全问题三、 阅读全文
posted @ 2014-01-18 00:54 Rynn 阅读(441) 评论(0) 推荐(0) 编辑
摘要: ==================================================================一、触摸事件&手势识别1>4个触摸事件,针对视图的2>6个手势识别(除了用代码添加,也可以用Storyboard添加)附加在某一个特定视图上的,其中需要注意轻扫手势通常会附加到根视图上。*大部分操作,都会在touchesBegan事件中处理,以防夜长梦多!*touchesEnd事件通常用于处理touchesMoved事件中的收尾工作!响应者链条只需要理解“链条”的产生和事件传递的顺序即可。============================ 阅读全文
posted @ 2014-01-16 23:27 Rynn 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 一、UIKit动力学UIKit动力学最大的特点是将现实世界动力驱动的动画引入了UIKit,比如重力,铰链连接,碰撞,悬挂等效果,即将2D物理引擎引入了UIKit注意:UIKit动力学的引入,并不是为了替代CA或者UIView动画,在绝大多数情况下CA或者UIView动画仍然是最优方案,只有在需要引入逼真的交互设计的时候,才需要使用UIKit动力学它是作为现有交互设计和实现的一种补充其他2D仿真引擎:BOX2D:C语言框架,免费Chipmunk:C语言框架免费,其他版本收费//以self.view为参照系(参照视图),实例化UIDynamicAnimatorUIDynamicAnimator*a 阅读全文
posted @ 2014-01-16 23:20 Rynn 阅读(468) 评论(0) 推荐(0) 编辑
摘要: 一、核心动画l核心动画基本概念l基本动画l关键帧动画l动画组l转场动画lCoreAnimation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍!l使用它需要先添加QuartzCore.framework和引入对应的框架l开发步骤:初始化一个动画对象(CAAnimation)并设置一些动画相关属性CALayer中很多属性都可以通过CAAnimation实现动画效果,包括:opacity、position、transform、bounds、contents等(可以在API文档中搜索:CALayerAnimatableProperties)添加动画对象到层(CA 阅读全文
posted @ 2014-01-15 21:36 Rynn 阅读(3530) 评论(0) 推荐(0) 编辑
摘要: NSKernAttributeName:调整字句kerning字句调整NSFontAttributeName:[UIFontsystemFontOfSize:_fontSize]设置字体NSForegroundColorAttributeName:[UIColorredColor]设置文字颜色NSParagraphStyleAttributeName:paragraph设置段落样式NSMutableParagraphStyle*paragraph=[[NSMutableParagraphStylealloc]init];paragraph.alignment=NSTextAlignmentCe 阅读全文
posted @ 2014-01-14 23:13 Rynn 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 一、CALayer简介CoreAnimation是跨平台的,支持iOS环境和MacOSX环境凡是支持跨平台的框架,都不能直接使用UIKit框架,因为UIKit框架只能应用在iOS而不能用于Mac需要先理解CALayer,因为核心动画操作的对象是CALayer,而不是UIViewCALayer是核心动画的基础,可以做圆角、阴影、边框等效果每个UIView内部都有一个Layer的属性在实现核心动画时,本质上是将CALayer中的内容转换成位图(一种图像格式),从而便于图形硬件的操纵二、UIView的CALayer基本属性设置UIView中的CALayer属性圆角、边框、阴影及3D形变属性在UIVi 阅读全文
posted @ 2014-01-14 22:48 Rynn 阅读(2572) 评论(0) 推荐(0) 编辑
摘要: 一、使用手势识别的四个步骤1>实例化手势识别-(id)initWithTarget:(id)targetaction:(SEL)action;2>设置手势识别属性3>将手势识别附加到指定的视图addGestureRecognizer4>编写监听方法二、手势说明0>UIGestureRecognizer所有手势识别的父类,不允许直接使用,可以用来自定义手势最常用的属性:view:发生手势的视图state:手势当前的状态,主要用于连续手势,对于离散手势一般不使用1>UITapGestureRecognizer点按手势(离散手势,其他手势都是连续手势)属性:num 阅读全文
posted @ 2014-01-13 23:59 Rynn 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 一、使用Quartz2D绘图的基本步骤1)获取上下文context(绘制图形的地方)2)设置路径(路径是用来描述形状的)3)将路径添加到上下文4)设置上下文属性(设置颜色,线宽,线性等)5)绘制路径6)释放路径(在Quartz2D中,因为是C语言的框架,所有用Create,Copy字样方法实例化的对象,都需要自行释放)二、Quartz2D是一套C语言的框架,C语言中使用方法1>在C语言中,所有的对象,都是通过对象的引用地址来使用的,因此不需要使用*2>C语言不是面向对象的语言,它是面向过程的语言,因此,在C语言中,如果要操作某一个对象,都是通过函数来实现3>ARC是OC的自动 阅读全文
posted @ 2014-01-12 23:52 Rynn 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 一、Quartz2DQuartz2D是一个二维图形绘制引擎,支持iOS环境和MacOSX环境。Quartz2D以PDF的规范为基础的图形库,用来绘制二维文字和图形,允许相同的绘图指令在任何装置上,使用可以得到的最佳分辨率,产生相同的输出Quartz2DAPI可以实现许多功能,如基于路径的绘图、透明度、阴影、颜色管理、反锯齿、PDF文档生成和PDF元数据访问等Quartz2DAPI是CoreGraphics框架的一部分,因此其中的很多数据类型和方法都是以CG开头的。会经常见到Quartz2D(Quartz)和CoreGraphics两个术语交互使用Quartz2D与分辨率和设备无关,因此在使用Q 阅读全文
posted @ 2014-01-12 23:42 Rynn 阅读(1517) 评论(0) 推荐(1) 编辑
摘要: 一、iOS的输入事件UIKit可识别三种类型的输入事件:触摸事件运动(加速计)事件远程控制事件二、UIEventiOS中许多事件对象都是UIEvent类的实例,记录事件产生的时刻和类型UIEvent类事件类型的enum常量:typedefNS_ENUM(NSInteger,UIEventType){UIEventTypeTouches,UIEventTypeMotion,UIEventTypeRemoteControl,};由UIEvent对象的type属性可以获取事件的类型三、响应者对象在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件。我们称之为“ 阅读全文
posted @ 2014-01-11 23:07 Rynn 阅读(1040) 评论(0) 推荐(0) 编辑
摘要: 一、KVC(keyvaluecoding)我们一般是通过调用set方法或属性的点语法来直接更改对象的状态,即对象的属性值,比如[stusetAge:10];stu.age=9;KVC,它是一种间接更改对象状态的方式,其实现方法是使用字符串来描述对象需要更改的属性。KVC中的基本调用包括valueForKey:和setValue:ForKey:,以字符串的形式向对象发送消息二、valueForKey使用valueForKey:获取Student对象的nameNSString*name=[studentvalueForKey:@"name"];valueForKey:首先查找以 阅读全文
posted @ 2014-01-10 22:22 Rynn 阅读(316) 评论(0) 推荐(0) 编辑
摘要: copy和mutableCopy一个对象使用copy或mutableCopy方法可以创建对象的副本copy–需要先实现NSCoppying协议,创建的是不可变副本(如NSString、NSArray、NSDictionary)mutableCopy–需要先实现NSMutableCopying协议,创建的是可变副本(如NSMutableString、NSMutableArray、NSMutableDictionary)深复制:内容拷贝,源对象和副本指向的是不同的两个对象。源对象引用计数器不变,副本计数器设置为1浅复制:指针拷贝,源对象和副本指向的是同一个对象。对象的引用计数器+1,其实相当于做了 阅读全文
posted @ 2014-01-10 22:17 Rynn 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 1.可以完成的功能:每隔一段时间做一些固定的事情2.创建定时器1>方法1NSTimer*timer=[NSTimertimerWithTimeInterval:1.5target:selfselector:@selector(randomFeet)userInfo:nilrepeats:YES];[timerfire];//需要调用fire才能启动计时器//fire方法只会触发一次计时器的调用2>方法2NSTimer*timer=[NSTimerscheduledTimerWithTimeInterval:1.5target:selfselector:@selector(rando 阅读全文
posted @ 2014-01-10 22:10 Rynn 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 步骤一:隐藏状态栏步骤二:屏幕适配步骤三:设置窗口的根控制器为导航控制器,并且设置导航条和状态栏。步骤四:搭建设置界面步骤五:控制器连线步骤六:搭建关卡控制器加载pilst文件创建关卡模型将数据转换成模型用xib关卡视图创建关卡视图类设置关卡视图的位置给关卡视图提供关卡模型属性,设置关卡视图的显示。传递模型给view步骤七:搭建准备游戏界面 1.设置关卡视图的代理,并且将关卡模型传递给准备控制器模型 2.给控制器中的视图控件赋值的时候,需要注意不能重写设置模型的方法,因为那时候控制器的控件还没创建,应该在viewdidload里赋值。 3.修改plist读取的数据步骤八:搭建指导界面步骤... 阅读全文
posted @ 2014-01-10 22:04 Rynn 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 一、当两个控制器互为父子关系的时候,它们的view一般也是互为父子关系比如想添加A控制器的view到B控制器的view上,就应该让A控制器成为B控制器的子控制器,而B控制器就称为A控制器的父控制器//[BaddChildViewController:A];//A就会存在于B的childViewControllers数组中//A.parentViewController==B//[B.viewaddSubview:A.view];//A.view就会存在于B.view.subviews数组中//A.view.superview==B.view二、利用navigationController获得当 阅读全文
posted @ 2014-01-09 22:05 Rynn 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 1.modal1.modal推出控制器的代码2.modal关闭当前控制器的代码3.modal推出的动画效果4.modal在ipad中应用2.如何给控制器加上导航栏3.modal和导航控制器的区别导航控制器切换是更改导航控制器上显示的子控制器的视图。而moadl切换是直接把之前的控制器视图移除父视图,在将后来的视图添加进去。4.更改窗口的根控制器,也是一种切换控制器的方法。使用场合:A推出B控制,A控制器用完就不需要了。5.plist属性列表列子步骤一:搭建界面步骤二:监听记录密码和自动登入按钮点击事件步骤三:监听登入按钮取出所有数据存储数据到沙盒的plist文件中获取沙盒根路径拼接Docume 阅读全文
posted @ 2014-01-09 00:55 Rynn 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 一、利用Modal形式展示控制器1.如何展示//vc就是要展示的新控制器[selfpresentViewController:vcanimated:YEScompletion:^{NSLog(@"展示完毕");}];2.如何关闭modal控制器[selfdismissViewControllerAnimated:YEScompletion:nil];二、切换控制器1.UINavigationController2.UITabBarController(不常用)3.Modal4.直接更改UIWindow的rootViewController5.自定义切换效果三、数据存储1.p 阅读全文
posted @ 2014-01-09 00:51 Rynn 阅读(381) 评论(0) 推荐(0) 编辑
摘要: 一、iOS应用数据存储的常用方式XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档SQLite3CoreData二、应用沙盒每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离。应用必须待在自己的沙盒里,其他应用不能访问该沙盒应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer)模拟器应用沙盒的根路径在:(apple是用户名,6.0是模拟器版本)/Users/apple/Library/ApplicationSupport/iPhoneSimulator/6.0/Applications三、应用沙盒结构分析应 阅读全文
posted @ 2014-01-09 00:47 Rynn 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 一、Container一个iOS的app很少只由一个ViewController组成,除非这个app极其简单。当app中有多个ViewController的时候,我们就需要对这些ViewController进行管理容器:负责展示一个或者多个ViewController,并管理这些ViewController的视图生命周期大部分容器本身也是一个ViewController,被容器管理的这些控制器可以称为容器的子控制器(ChildViewController),而容器可以被称为父控制器(parentViewController)也有极少数容器不是ViewController,比如UIPopover 阅读全文
posted @ 2014-01-08 00:17 Rynn 阅读(517) 评论(0) 推荐(0) 编辑
摘要: 一、UIApplicationMain在main.m的main函数中执行了UIApplicationMain这个方法,这是ios程序的入口点intUIApplicationMain(intargc,char*argv[],NSString*principalClassName,NSString*delegateClassName)argc、argv:ISOC标准main函数的参数,直接传递给UIApplicationMain进行相关处理即可principalClassName:指定应用程序类,该类必须是UIApplication(或子类)。如果为nil,则用UIApplication类作为默认 阅读全文
posted @ 2014-01-08 00:02 Rynn 阅读(499) 评论(1) 推荐(0) 编辑
摘要: 1.完善键盘处理步骤一:创建一个数组,里面装着所有的文本框。步骤二:监听所有文本框的开始编辑,设置所有文本框的代理为控制器1.设置生日和城市不允许键盘输入2.当开始编辑的时候调用,用一个成员属性,记录住当前聚焦的文本框步骤三:完成工具条的代理方法步骤四:判断工具条上的按钮是否能点击步骤五:将文本框数组按照y值排序步骤六:监听系统发出键盘滚动通知步骤七:当键盘挡住文本框将视图往上移步骤八:移除监听通知2.一切控件的封装最好继承UIView3.项目中常见文件1.main程序的入口2.pch当项目中有些宏或者常用的东西放在pch,公司中打开一个项目先应该看的文件。4.屏幕适配:视网膜会自动加载@2x 阅读全文
posted @ 2014-01-06 22:06 Rynn 阅读(443) 评论(0) 推荐(0) 编辑
摘要: 1.UIDatePicker继承自UIControl,因此不会通过代理来监听事件的改变,而是通过addTarget来监听事件。监听的事件是值改变事件。2.UIPickerView继承自UIView,里面有数据源和代理,因此UIPickerView展示数据通过数据源,监听事件通过代理。一、如何监听控件的一些事件 或者 行为* 如果父类是UIControl,说明是通过addTarget:action:forControlEvents:方法来监听控件的一些事件* 如果父类不是UIControl,说明一般是通过代理方法来监听控件的一些行为二、UIDatePicker 1.常见属性/* 样式 UIDat 阅读全文
posted @ 2014-01-05 20:58 Rynn 阅读(777) 评论(0) 推荐(0) 编辑
摘要: 一、UITextField1.常见属性@property(nonatomic,retain)UIView*leftView;//设置文本框左边显示什么控件,可以让文本框的内容往右边挪动@property(nonatomic)UITextFieldViewModeleftViewMode;//设置左边控件的显示模式/*UITextFieldViewMode的取值UITextFieldViewModeNever,永远不显示UITextFieldViewModeWhileEditing,当文本框正在编辑的时候显示UITextFieldViewModeUnlessEditing,文本框没有编辑的时候显 阅读全文
posted @ 2014-01-04 19:35 Rynn 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 通知中心(NSNotificationCenter)每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信任何一个对象都可以向通知中心发布通知(NSNotification),描述自己在做什么。其他感兴趣的对象(Observer)可以申请在某个特定通知发布时(或在某个特定的对象发布通知时)收到这个通知通知(NSNotification)一个完整的通知一般包含3个属性:-(NSString*)name;//通知的名称-(id)object;//通知发布者(是谁要发布通知)-(NSDictionary*)userInfo;//一些额外的具 阅读全文
posted @ 2014-01-03 23:17 Rynn 阅读(697) 评论(0) 推荐(0) 编辑
摘要: 1.继承UITableViewController默认会设置数据源和代理,并且会自动遵守数据源和代理协议,并且self.tableView相当于self.view2.更换控制器时,注意把storyboard中之前的控制器给删了,然后在重新拖一个进来,并且设置他的class为新的控制器。就能在加载程序的时候,进入新的控制器。3.自定义cell例子思路引导步骤一:创建xib,描述自定义cell的外观。(UIImageView,3个UILabel)步骤二:取消Autolayout步骤三:实现数据源方法定义可重用标识从缓冲池里取cell判断cell是否为空,如果为空,就手动创建设置cell的内容步骤四 阅读全文
posted @ 2014-01-02 21:37 Rynn 阅读(487) 评论(0) 推荐(0) 编辑
摘要: 一、UITableView的代理方法#pragmamark每一行的高度-(CGFloat)tableView:(UITableView*)tableViewheightForRowAtIndexPath:(NSIndexPath*)indexPath#pragmamark选中了某一行就会调用-(void)tableView:(UITableView*)tableViewdidSelectRowAtIndexPath:(NSIndexPath*)indexPath#pragmamark取消选中了某一行就会调用-(void)tableView:(UITableView*)tableViewdidD 阅读全文
posted @ 2014-01-01 22:42 Rynn 阅读(1174) 评论(0) 推荐(0) 编辑
摘要: UITableView的数据源(dataSource)和代理(delegate)UITableView需要一个数据源(dataSource)来显示数据,UITableView会向数据源查询一共有多少行数据以及每一行显示什么数据等。没有设置数据源的UITableView只是个空壳。凡是遵守UITableViewDataSource协议的OC对象,都可以是UITableView的数据源。通常都要为UITableView设置代理对象(delegate),以便在UITableView触发一下事件时做出相应的处理,比如选中了某一行。凡是遵守了UITableViewDelegate协议的OC对象,都可以是 阅读全文
posted @ 2014-01-01 01:06 Rynn 阅读(2913) 评论(0) 推荐(0) 编辑