------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1.先学习什么?
<1>不管学习Android开发还是iOS开发,都建议先学习UI;
<2>UI是app的根基:一个app应该是先有UI界面,然后在UI的基础上增加使用功能;
<3>UI相对简单易学:UI普遍是学习过程中最简单的一块,能快速拥有成就感和学习兴趣;
<4>UI至关重要:开发中的绝大部分时间都在处理UI;
<5>软件开发定律:万物皆对象;
<6>搭建UI界面的过程极其简单:利用类创建对象,将对象显示到屏幕上。
2.常用系统自带框架?
<1>UIKit - 创建和管理应用程序的用户界面;
<2>QuartzCore - 提供动画特效以及通过硬件进行渲染的能力;
<3>CoreGraphics - 提供2D绘制的基于C的API;
<4>CoreLocation - 使用GPS和WIFI获取位置信息;
<5>MapKit - 为应用程序提供内嵌地图的接口;
<6>AVFoundation – 音频处理。
3.如何搭建UI界面?
<1>在iOS5之前,苹果使用xib文件来描述UI界面;
<2>在iOS5之后,苹果采用了更加强大和先进的storyboard文件来描述界面;
<3>storyboard文件中,界面左边的箭头表明:程序一启动就会显示箭头所指的界面。
4.常见UI控件?
<1>UILabel - 文本标签:文本标签的作用仅仅是显示一串固定的文字;
<2>UIButton - 按钮:按钮的作用是监听用户的点击事件,在用户点击后做出反应;
<3>UITextField - 文本输入框:文本输入框可以弹出键盘,让用户输入一些具体的值;
<4>UITextView - 能滚动的文字显示控件:文字内容比较多,需要换行显示,并且需要编辑;
<5>UIProgressView - 进度条:水平进度条;
<6>UISlider - 滑块:在2个数值之间滑动选择;
<7>UIAlertView - 对话框(中间弹框):从中间弹出一个框提示用户下一步该干啥;
<8>UIActionSheet - 底部弹框:从底部弹出一个框提示用户下一步该干啥;
<9>UIScrollView - 滚动的控件:如果内容比较多,超出了一个屏幕,就可以用它来显示;
<10>UITableView - 表格:如果每一行显示的内容格式差不多,就用这个表格控件;
<11>UISegmentControl - 选项卡:在固定的几个选项之间进行选择。
5.UIView和UIViewController?
<1>屏幕上能看得见摸的着的东西就是UIView,一般翻译叫做视图\控件\组件;
<2>UIButton、UILable、UITextField都继承自UIView;
<3>每一个UIView都是一个容器,能容纳其他UIView;
<4>每一个新的界面都是一个新的UIView,在切换过程中,涉及到了UIView的创建和销毁,UIView跟用户的交互(处理UIView内部每一行的点击);
<5>每当显示一个新界面时,首先会创建一个新的UIViewController对象,然后创建一个对应的全屏UIView,UIViewController负责管理这个UIView;
<6>UIViewController就是UIView的大管家,负责创建、显示、销毁UIView,负责监听UIView内部的事件,负责处理UIView与用户的交互;
<7>UIViewController内部有个UIView属性,就是它负责管理的UIView对象:
@property (nonatomic,retain) UIView *view;
6.IBAction和IBOutlet?
<1>IBAction:①从返回值角度上看,作用相当于void;②只有返回值声明为IBAction的方法,才能跟storyboard中的控件进行连线;
<2>IBOutlet:只有声明为IBOutlet的属性,才能跟storyboard中的控件进行连线。
7.退出键盘的两种方式?
<1>resignFirstResponder:当叫出键盘的那个控件(第一响应者)调用这个方法时,就能退出键盘:
[self.num1 resignFirstResponder]; // 不当第一响应者(就会把键盘退下)
<2>endEditing:只要调用这个方法的控件内部存在第一响应者,就能退出键盘:
[self.view endEditing:YES];
8.如何修改控件状态?
<1>每一个UI控件都是一个对象,修改UI控件的状态,其实就是修改控件对象的属性;
<2>虽然每一个UI控件都有自己的独特属性,但是有些属性是每个UI控件都具备的,所有的UI控件最终都继承自UIView,UI控件的公共属性都定义在UIView中。
9.UIView的常见属性?
<1>获得自己的父控件对象:
@property (nonatomic,readonly) UIView *superview;
<2>获得自己的所有子控件对象:
@property (nonatomic,readonly,copy) NSArray *subviews;
<3>控件的ID\标识,父控件可以通过tag来找到对应的子控件:
@property (nonatomic) NSInteger tag;
<4>控件的形变属性(可以设置旋转角度、比例缩放、平移等属性):
@property (nonatomic) CGAffineTransform transform;
<5>控件所在矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点):
@property (nonatomic) CGRect frame;
<6>控件所在矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x\y一般为0):
@property (nonatomic) CGRect bounds;
<7>控件中点的位置(以父控件的左上角为坐标原点):
@property (nonatomic) CGPoint center;
10.UIKit坐标系?
<1>在UIKit中,坐标系的原点(0,0)在左上角,x值向右正向延伸,y值向下正向延伸。
11.UIView的常见方法?
<1>添加一个子控件view:
- (void)addSubview:(UIView *)view;
<2>从父控件中移除:
- (void)removeFromSuperview;
<3>根据一个tag标识找出对应的控件(一般都是子控件):
- (UIView *)viewWithTag:(NSInteger)tag;
12.添加图片资源?
<1>从Xcode5开始,图片资源都放到Image.xcassets中进行管理。
13.按钮状态?
<1>normal(普通状态):默认状态(Default),UIControlStateNormal;
<2>highlighted(高亮状态):按钮被按下去的时候(手指还未松开),UIControlStateHighlighted;
<3>disabled(失效状态,不可用状态):如果enabled属性为NO,就是处于disable状态,代表按钮不可以被点击,UIControlStateDisabled;
<4>设置按钮在不同状态下的背景图片,为了保证高亮的图片正常显示,必须设置按钮的type为custom。
14.修改按钮的位置和尺寸?
<1>通过修改控件的frame属性就可以修改控件在屏幕上的位置和尺寸;
<2>OC语法规定:不允许直接修改对象的结构体属性的成员;
<3>如果发现通过代码无法修改控件的位置或者尺寸时,应该去掉storyboard里面的autolayout功能,这是自iOS6开始出现的特性;
<4>autolayout是用来自动布局的,用来束缚控件的位置和尺寸,去掉这个功能,控件的位置和尺寸就不再有一些固定的束缚;
<5>通过frame.origin\center属性可以修改控件的位置;
<6>通过frame.size\bounds.size属性可以修改控件的尺寸。
15.简易动画的2种方式?
<1>头尾式:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0]; // 执行动画所需的时间
/** 需要执行动画的代码 **/
[UIView commitAnimations];
<2>Block式:
[UIView animateWithDuration:0.5 animations:^{
/** 需要执行动画的代码 **/
}];
16.transform属性?
<1>利用transform属性可以修改控件的位移(位置)、缩放、旋转;
<2>创建一个transform属性:
CGAffineTransform CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty);
CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy);
CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle);
// (angle是弧度制,并不是角度制)
<3>在某个transform的基础上进行叠加:
CGAffineTransform CGAffineTransformTranslate(CGAffineTransform t, CGFloat tx, CGFloat ty);
CGAffineTransform CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy);
CGAffineTransform CGAffineTransformRotate(CGAffineTransform t, CGFloat angle);
<4>清空之前设置的transform属性:
view.transform = CGAffineTransformIdentity;
17.常见类型?
<1>一个UIColor代表一种颜色,通过UIColor的类方法,可以获得很多常用的颜色:
+ (UIColor *)blackColor; // 0.0 white 黑色
+ (UIColor *)darkGrayColor; // 0.333 white 深灰色
+ (UIColor *)lightGrayColor; // 0.667 white 亮灰色
<2>一个UIImage对象代表一张图片,一般通过imageNamed:方法就可以通过文件名加载项目中的图片(文件名可以省略扩展名):
UIImage *image = [UIImage imageNamed:@"btn_01"];