练习 1 > 建立一个Empty Application 项目,并将window的背景颜色改为红色.
//1>创建一个window窗口( 开辟空间) ,并将其初始化( 也就是初始化它的一个范围) ,给定window屏幕的大小与我们的main screen 一样大 ,做都 bounds
self.window =[ [UIWindow alloc ] initWithFrame:[ [ UIScreen mainScreen ] bounds ] ] ;
//2>给window窗口背景添加颜色——>调用它的颜色类的 颜色方法
self.window.backgroundColor = [UIColor redColor ];
//3>使我们创建的window窗口可见( 显示到 window上)
[self.window makeKeyAndVisible ] ;
4>UIView :
- view (视图) :代表屏幕上的一个矩形区域,ios中用UIView 来表示视图.
- PPT里看到的各种UI控件都属于view
- 不同的控件代表不同种类的view
- iOS中所有能看到的内容都是view 或其子类
———> 创建视图的步骤如下:
- 1>开辟空间并初始化视图 ( 初始化时,给出视图位置和大小)
// UIView *view = [ [ UIView alloc ]initWithFrame:CGRect ( 100, 100,120,100 ) ] ;
// view.backgroundColor = [ UIColor blueColor] ;
// [self.window addSubview : view] ;
/// [ view release ] ;
a>frame : 框架 ( 形容一个view 的 范围 )
- frame 是view的重要属性 ,是我们做图布局的关键,它决定了视图的大小和位置 .
- 根据ios坐标系 来掌控view的大小和位置 .
——>iOS 提供了用于布局的平面坐标系.
- 左上角为坐标系的原点 ,
- 水平向右 :为x的正方向, 屏幕最左到最右可划分320 等份
- 垂直向下:为Y的正方向 ,屏幕最上到最下可划分480等份 ( 3.5 inch 屏幕 )
- 坐标系不是以像素作为划分依据的,而是以”点" 作为依据
——>frame 是一个结构体,包含2部分内容:origin [‘?rid?in, ‘?:-] ( 起源 ,开端 ) 和 size ;
——>origin 也是一个结构体,包含2部分内容 : X ,Y .
——>size 也是一个结构体 ,包含2部分内容 : width 和 height .
——>frame 的origin 和size 是相对于父视图来说的.
——>CGRectMake( ) 函数可以帮我们快速构造一个CGRect 变量
b> center
- center ( 中心点 ) 也是view 重要的属性
- center 是一个结构体 ,包含2个部分 : X,Y.
- center 与 frame 有着密切的联系
- center.x = frame.origin.x + frame.size.with/2 ;
- center.y = frame.origin.y +frame.size.height/2 ;
- //改变greenview的center值,那么greenview位置也会跟着改变//
[greenView setCenter:CGPointMake(100, 100)];
//或者
//greenView.center = CGPointMake(100, 100)//
c> bounds : 边界
- bounds (边界) 也是view 的重要属性 ,用于定义自己的边界,它同frame一样是一个CGRect 结构体变量
- 当一个view 设置 bounds 时,会把自己当成一个容器,定义自己的边界大小以及左上角的初始坐标.例如:view.bounds = CGRectMake( 0,0,100,100 ) ;
- 当子视图添加到此视图时,会根据bounds 指定的原点( 0,0 ) 计算frame,而非左上角
———> *总结: setBounds 属性 ,父视图不会变化,子视图会随着变化;bounds 是相对于自身来说的 ,它的X,Y 永远不会发生变化 ,但是它的宽高改变之后,宽高就会发生改变....Frame是相对于父视图来说的,改变任何的长度(X,Y,宽,高)就会变化;
/2>设置redView的bounds 属性,将bounds.origin改为(0 ,30) 查看结果
redView.bounds =CGRectMake(0,30, 130,130);//redView视图没变化,而它的子视图会随着redView的 (origin.X,origin.y)而变化 ,但是子视图的 Y 会减30
//3>2>设置redView的bounds 属性,将bounds.origin改为(10 ,30) 查看结果
redView.bounds = CGRectMake(10, 30, 130, 130);//redView视图没变化,而它的子视图会随着redView的 (origin.X,origin.y)而变化 ,但是子视图的 X 会减10, Y 会减30
———>frame center bounds 之间的关系 见下图 ...
// self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 150, 50)];