黑马程序员——第一个iOS程序

来源:互联网 发布:数字媒体技术软件 编辑:程序博客网 时间:2024/04/30 00:46

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对象:

  1. @property (nonatomic,retainUIView *view;

6.IBAction和IBOutlet?

<1>IBAction:①从返回值角度上看,作用相当于void;②只有返回值声明为IBAction的方法,才能跟storyboard中的控件进行连线;

<2>IBOutlet:只有声明为IBOutlet的属性,才能跟storyboard中的控件进行连线。

7.退出键盘的两种方式?

<1>resignFirstResponder:当叫出键盘的那个控件(第一响应者)调用这个方法时,就能退出键盘:

  1. [self.num1 resignFirstResponder]; // 不当第一响应者(就会把键盘退下)

<2>endEditing:只要调用这个方法的控件内部存在第一响应者,就能退出键盘:

  1. [self.view endEditing:YES];

8.如何修改控件状态?

<1>每一个UI控件都是一个对象,修改UI控件的状态,其实就是修改控件对象的属性;

<2>虽然每一个UI控件都有自己的独特属性,但是有些属性是每个UI控件都具备的,所有的UI控件最终都继承自UIView,UI控件的公共属性都定义在UIView中。

9.UIView的常见属性?

<1>获得自己的父控件对象:

  1. @property (nonatomic,readonlyUIView *superview;

<2>获得自己的所有子控件对象:

  1. @property (nonatomic,readonly,copyNSArray *subviews;

<3>控件的ID\标识,父控件可以通过tag来找到对应的子控件:

  1. @property (nonatomicNSInteger tag;

<4>控件的形变属性(可以设置旋转角度、比例缩放、平移等属性):

  1. @property (nonatomicCGAffineTransform transform;

<5>控件所在矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点):

  1. @property (nonatomicCGRect frame;

<6>控件所在矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x\y一般为0):

  1. @property (nonatomicCGRect bounds;

<7>控件中点的位置(以父控件的左上角为坐标原点):

  1. @property (nonatomicCGPoint center;

10.UIKit坐标系?

<1>在UIKit中,坐标系的原点(0,0)在左上角,x值向右正向延伸,y值向下正向延伸。

11.UIView的常见方法?

<1>添加一个子控件view:

  1. - (void)addSubview:(UIView *)view;

<2>从父控件中移除:

  1. - (void)removeFromSuperview;

<3>根据一个tag标识找出对应的控件(一般都是子控件):

  1. - (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>头尾式:

  1. [UIView beginAnimations:nil context:nil];
  2. [UIView setAnimationDuration:2.0]; // 执行动画所需的时间
  3. /** 需要执行动画的代码 **/
  4. [UIView commitAnimations];

<2>Block式:

  1. [UIView animateWithDuration:0.5 animations:^{
  2.     /** 需要执行动画的代码 **/
  3. }];

16.transform属性?

<1>利用transform属性可以修改控件的位移(位置)、缩放、旋转;

<2>创建一个transform属性:

  1. CGAffineTransform CGAffineTransformMakeTranslation(CGFloat tx,  CGFloat ty);
  2. CGAffineTransform CGAffineTransformMakeScale(CGFloat sxCGFloat sy);
  3. CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle);
  4. // (angle是弧度制,并不是角度制)

<3>在某个transform的基础上进行叠加:

  1. CGAffineTransform CGAffineTransformTranslate(CGAffineTransform tCGFloat txCGFloat ty);
  2. CGAffineTransform CGAffineTransformScale(CGAffineTransform tCGFloat sxCGFloat sy);
  3. CGAffineTransform CGAffineTransformRotate(CGAffineTransform tCGFloat angle);

<4>清空之前设置的transform属性:

  1. view.transform = CGAffineTransformIdentity;

17.常见类型?

<1>一个UIColor代表一种颜色,通过UIColor的类方法,可以获得很多常用的颜色:

  1. + (UIColor *)blackColor;      // 0.0 white 黑色
  2. + (UIColor *)darkGrayColor;   // 0.333 white 深灰色
  3. + (UIColor *)lightGrayColor;  // 0.667 white 亮灰色

<2>一个UIImage对象代表一张图片,一般通过imageNamed:方法就可以通过文件名加载项目中的图片(文件名可以省略扩展名):

  1. UIImage *image = [UIImage imageNamed:@"btn_01"];
0 0
原创粉丝点击