UI note1

 

Xcode创建的UI工程,有一对AppDelegate.h和AppDelegate.m是一个代理的实现。

.m⾥里的很多⽅方法,都是通过实现<UIApplicationDelegate>代理而

生成的⽅法。

.h⾥里只有⼀个属性

 

@property (strong, nonatomic) UIWindow *window;//这个属性是ARC下

的声明,用了strong,strong相当于retain

@property (retain, nonatomic) UIWindow *window;// 这个属性是MRC

下的声明,用了retain。

 

2、UIWindow(形象化如画板)

window

相当于⼀个画板,要想展现自⼰想要的图像或者图形,需要把画的东西画在window这个画板上。

window继承于UIView,在UI中,所有的能看得到的东西,都是继承于UIView。就是MVC中的V 就是视图

 

在iOS中,通常用UIWindow来表⽰示窗口,每个app都要把要展现的东西都写在UIWindow上。

通常,(iPhone)⼀个App只创建一个UIWindow对象。iPad有分屏功能

 

创建UIWindow对象

解释:

1、initWithFrame:[[UIScreen mainScreen] bounds],初始化window,使这个window跟屏幕⼀样⼤⼩。

2、backgroundColor,设置背景色

3、makeKeyAndVisible,把window设置成可显⽰的。

 

4、UIView(视图)

任何在屏幕上显示的图形,都是矩形,只是都做了处理。因为,所有在iOS⾥能看到的,都是UIView或UIView的子类。

 

// 创建window对象,初始化时设置window的位置和⼤⼩与屏幕相同。

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

 

// 给window设置背景颜色

self.window.backgroundColor = [UIColor whiteColor];

 

// 把window设置为可显示

[self.window makeKeyAndVisible];

 

创建UIView

 

1、CGRectMake,是⼀个返回值为结构体的CGRect,有4个参数的⽅法,用来确定我们所创建的视图的位置和⼤⼩。

2、CGRect是一个结构体,有两个成员变量: CGPoint   CGSize

这两个成员变量都是结构体,每个成员变量⾥都分别有两个成员变量,都是CGFloat类型的。 x   y        width height

3、CGPoint的两个成员变量是用来确定我们创建视图的位置。(x, y)

4、CGSize的两个成员变量是⽤来确定我们的创建的视图的⼤⼩,一个为宽,一个为高。width   height

5、起始位置:从屏幕的最左上⾓为(0,0)点,往下为正Y轴,右为正X轴。

6、addSubview  把我们创建的视图,添加到window中,这样,才能使我们的视图可见。

 

frame

frame其实也是一个结构体,是结构体CGRect的一个变量

 

// 创建View

// 1.创建对象

UIView *view = [[UIView alloc]initWithFrame:CGRectMake(100, 122, 100, 100)];

 

// 2.设置view属性(颜⾊就是属性之⼀)

// 设置背景颜⾊

view.backgroundColor = [UIColor yellowColor];

 

// 3.添加视图

// view的父视图是window

// window 的子视图是view

 

// 添加视图时,系统对视图进⾏retain。我们把这个retain叫做持有。(window持有)

[self.window addSubview:view];

 

// 4.释放

[view1 release];

view1 = nil;

 

 

// frame ,其实就是⼀个结构体,有两个成员变量,均为结构体,两个成员变量里分别有两个成员变量, 都是CGFloatt类型的。

// 根据⽗视图来的。

UIView *view4 = [[UIView alloc]init];

view4.frame = CGRectMake(220, 20, 100, 50);

view4.backgroundColor = [UIColor greenColor];

[self.window addSubview:view4];

[view4 release];

view4 = nil;

 

 

 

bounds

在每添加一个view的时候,每个view分别以自⼰的起点为(0,0)点,创建一个坐标系

这个bounds就是一个结构体,⽤来确定view的新坐标。

 

frame与bounds的区别:

frame与bounds都是结构体,都是⽤来确定位置和⼤小的;

frame的位置是从屏幕的最左上⾓开始算的;

bounds是从新添加的view的最左上角的点开始算。

posted @ 2015-11-17 19:31  xlsn0w  阅读(150)  评论(0编辑  收藏  举报