一、iOS项目开发流程
1、想象力
有一个好的想法 ----> 再写出好的方案
2、开发步骤
搭建软件界面(UI设计) ----> 获取网络数据(多线程&网络) ----> 解析网络数据(JSON\XML) ----> 把数据展示到界面上(UI设计)
3、开发中选用框架规律
系统自带的框架 ----> 第三方提供的框架 ----> 网络中的类似代码 ----> 自己动手编写代码
二、Xcode初学者注意
1、Deployment Info的设置
- Deployment Target(部署目标):设置为8.0,表示该程序能够运行在大于或等于iOS 8.0的设备上
- Devices(部署的设备):可选iPhone或iPad
- Main Interface:设置主界面,程序启动时会加载这个storyboard界面
- Device Orientation:设置设备的方向,如下图:
2、Show File Inspector
- Use Size Classes:用于定制不同的界面,可以使一个storyboard满足所有的设备,它一般与Auto Layout结合使用。初学者一般不选择,学到了再选择。
- 注意:如果发现通过代码无法修改控件的位置或者尺寸时,应该去掉storyboard里面的Auto Layout功能,这是自iOS6开始出现的特性
3、storyboard的Show Identity Inspector
- Class:指定控制器类。如ViewController
4、指向storyboard(故事版)的灰色箭头
- 程序一启动,就会加载并显示箭头所指向的故事板,即启动时是否初始化故事版,有箭头表示需要初始化,没有箭头表示不初始化。
- 调出箭头:storyboard的属性栏 ----> View Controller ----> Is Intial new controller
5、父控件与子控件
- 屏幕上能看得见摸得着的,都是一个UIView控件
- 每一个UIView都是一个容器,能容纳其他的UIView,外面的UIView的叫父控件,里面的叫子控件
- 子控件继承父控件
- 在父控件里,同级别的控件叫兄弟控件
6、UIViewController(视图控制器)
- 作用:用于管理UIView,负责创建、显示、销毁UIView,负责监听UIView内部的事件,负责处理UIView与用户的交互
- 每当显示一个新的界面时,首先会先创建一个新的UIViewController对象,然后创建一个对应全屏的UIView,UIViewController负责管理这个UIView
- UIViewController内部有一个UIView属性:@property (nonatomic,retain) UIView * view;
7、IBAction与IBOutlet
- IBAction
a、相当于viod,只用于方法
b、只有返回值类型为IBAction才有能与storyboard上的控件连线
- IBOutlet
a、IBOutlet只用于属性,标识其属性可以与storyboard上的控件连线
b、IBOutlet只是一个标识,定义为 #difine IBOutlet
c、由定义知道,IBOutlet表示一个空格的字符常量
8、IBAction连线
- 连线的方法
a、从.h或.m文件直接把方法前面的小圈拖到storyboard里的控件上b、按住Ctrl键,把storyboard里的控件拖到.h或.m文件里的方法上c、按住Ctrl键,把storyboard里的控件拖到.h或.m文件里的空白处,在弹出的对话框中填写IBOutlet或IBAction等信息,系统自动生成代码
- 参数的个数
a、没有参数b、带一个参数sender,sender表示触发这个事件的控件c、带有两个参数sender和event,sender表示触发这个事件的控件,events表示触发的事件
9、补充
- Xcode5之后,官方推荐与控件连线的属性和方法都写在类扩展里,因为不希望被其他的类调用,突出了其封装性
- Xcode6之前还自动添加开发所依赖的框架,Xcode6后默认系统框架不再显示出来了
- Link frameworks and libraries:添加项目所需要的框架
三、UI控件
1、UITextField(文本输入框)
- 属性:
Text:修改文本Placeholder:用于提示用户输入Clear when editing begins:输入前清空Keyboard Type:设置输入键盘类型Secure Text Entry:隐藏输入框内容,主要用于密码输入
- 关闭键盘:
方法一:撤销第一响应者,谁调用谁关闭,有多少个对象调用就得调用多少次resignFirstResponder,如 [self.num1TextField resignFirstResponder];方法二:View父控件结束编辑,只要是自己或自己的子控件调用的键盘都退出,如 [self.view endEditing: YES];//YES表示强制,NO表示非强制
2、UIButton(按钮)
- 属性:
Type ----> Custom:自定义类型State Config ----> Default:普通状态State Config ----> Highlighted:高亮状态Background:设置背景图片
- 按钮的状态:
normal(普通状态):默认情况, UIControlStateNormal
highlighted(高亮状态):按钮被按下去的时候(手指还未松开), UIControlStateHighlighted
3、UILabel(文本标签)
- Text属性的修改
a、在storyboard里直接双击修改,UILabel的尺寸会随文子的多少自动改变b、在属性栏里修改,UILabel的尺寸不改变
四、UIView常见的属性和方法
每一个UI控件都有自己的独特属性,但是有些属性是每个UI控件都具备的,比如每一个UI控件都有自己的位置和尺寸、都有自己的父控件、子控件。于是,所有的UI控件最终都继承自UIView,UI控件的公共属性都定义在UIView中。
1、UIView的常见属性:
- @property(nonatomic,readonly) UIView *superview;//获得自己的父控件对象
- @property(nonatomic,readonly,copy) NSArray *subviews;//获得自己的所有子控件对象
- @property(nonatomic) NSInteger tag;//控件的ID\标识,父控件可以通过tag来找到对应的子控件
- @property(nonatomic) CGAffineTransform transform;//控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)
- @property(nonatomic) CGRect frame;//控件所在矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点)
- @property(nonatomic) CGRect bounds;//控件所在矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x\y一般为0)
- @property(nonatomic) CGPoint center;//控件中点的位置(以父控件的左上角为坐标原点)
2、UIView的常见方法
- - (void)addSubview:(UIView *)view;//添加一个子控件view
- - (void)removeFromSuperview;//从父控件中移除
- - (UIView *)viewWithTag:(NSInteger)tag;//根据一个tag标识找出对应的控件(一般都是子控件)