1.UI的窗口类,用于显示界面,一般一个应用至少有一个window
创建window 时,需要指定window 大小.
通常window 的大小(frame)与屏幕大小(UIScreen)大小一致
代码如下:
self.window=[[UIWindow alloc]initWithFrame:[[UIScreen mainScreen ]bounds]];
2.iOS中的空间都是矩形,决定一个空间位置及大小,用结构体CGRect
view(视图):代表屏幕上的一个矩形区域。
不同控件代表不同种类的view。
创建一个UIView
创建一个视图,并设置视图的位置大小
UIView * blueView =[[UIView alloc]initWithFrame:CGRectMake(10, 20, 100, 100)];
// 设置视图颜色
blueView.backgroundColor=[UIColor blueColor];
// 添加视图,添加到视图数组中
[self.window addSubview:blueView];
// 一个视图可以有多个子视图
// 1.addView 是一层一层往上加,新加的只能放到父视图的最上层。
// 2.insertSubView可以控制它添加到父视图的哪一层
// A addSubview B 是将B直接覆盖在A的最上层
// A insertSubView B AtIndex:2 是将B插入到A的子视图index为2的位置(最底下是0)
// A insertSubView B aboveSubview:C 是将B插入A并且在A已有的子视图C的上面(在指定的视图上面添加视图)
// A insertSubView B belowSubview:C 是将B插入A并且在A已有的子视图C的下面(在是定的视图下面添加视图)
UIView * blueView=[[UIView alloc]initWithFrame:CGRectMake(100, 20, 10, 200)];
blueView.backgroundColor=[UIColor blueColor];
UIView * redView=[[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
redView.backgroundColor=[UIColor redColor];
// 1.将视图添加到window 上
[self.window addSubview:redView];
UIView * yelloView=[[UIView alloc]initWithFrame:CGRectMake(10, 10, 20, 20)];
yelloView.backgroundColor=[UIColor yellowColor];
// 2.将子视图添加到视图之上
// 添加视图.向父视图发送消息,参数是子视图
[redView addSubview:yelloView];
// 3.在指定的index 处插入视图
[ self.window insertSubview:blueView atIndex:1];
**管理视图层次**
// 把指定的子视图移动到最前面
[self.window bringSubviewToFront:redView];
// 把指定的⼦子视图移动到最后⾯面
[self.window sendSubviewToBack:redView];
// 交换两个图层
[self.window exchangeSubviewAtIndex:0 withSubviewAtIndex:3];
// 1)将redView 从当前删除,添加在其上的yellowView也相应的删除。
// 以什么为基准添加的视图,就是什么的子视图。
[redView removeFromSuperview];
// 2)一次性全部移除
for (UIView * view in self.window.subviews) {
[view removeFromSuperview];
}
NSLog(@"%@",self.window.subviews);
frame、center、bounds、alpha、hidden、tag、superview、subviews、
// frame 是view 的重要属性,决定了视图的大小和位置
// iOS左上角为坐标原点
// 水平向右:为x的正方向。屏幕划分为320 等份
// 垂直向下:为y的正方向。屏幕最上到最下划分为等分的480 等份。(3.5英寸)
// 坐标系不是以像素作为划分依据,而是以点作为依据。
// - (instancetype)initWithFrame:(CGRect)frame;
// CGRect ,结构体:包含CGPoint、CGSize
CGRect cgtect=CGRectMake(10, 20, 20, 200);
NSLog(@"%.2f,%.2f,%.2f,%.2f",cgtect.origin.x,cgtect.origin.y,cgtect.size.width,cgtect.size.height);
//把CGRect 转换为对象输出
NSLog(@"%@",NSStringFromCGRect(cgtect));
//CGPoint ,结构体,用来存储x,y坐标
CGPoint point=CGPointMake(10, 20);
NSLog(@"%.2f,%.2f",point.x,point.y);
NSLog(@"%@",NSStringFromCGPoint(point));
// CGSize,结构体,用来存储width,height
CGSize size=CGSizeMake(20, 100);
NSLog(@"%.2f,%.2f",size.width,size.height);
NSLog(@"%@",NSStringFromCGSize(size));
内部实现:
//CGPoint ,结构体,用来存储x,y坐标
struct CGVector {
CGFloat dx;
CGFloat dy;
};
typedef struct CGVector CGVector;
/* Rectangles. */
struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CGRect CGRect;
// center (中心点)也是view的重要属性
// center 是个结构体,包含:x,y
// center.x=frame.origin.x+ frame.size.width/2;
// center.y =frame.origin.y +frame.size.height/2;
// bounds(边界)也是view的重要属性,用于定义自己的边界,
// 同frame一样是一个CGRect结构变量
// bounds:
// 以视图自身的参考系为基准,
// 更改bounds 不会影响自身位置的改变,会影响子视图位置的改变。
// frame
// 以父视图的坐标系为基准,
// 修改frame 会影响自己的位置和大小。
*****// 如果想要移动自己的位置
// 1.修改自己的frame
// 2.修改父视图的bounds*****
UIView *centerView =[[UIView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)];
centerView.backgroundColor=[UIColor redColor];
//设置是否隐藏
// 设置透明度
centerView.alpha=0.5;
// 获取子视图:是一个数组。
NSLog(@"%@",self.window.subviews);
// 获取父视图:
NSLog(@"%@",yelloView.superview);
// 设置frame
centerView.frame=CGRectMake(0, 10, 100, 100);
**// 一个frame只能整体修改
// 如果想单个修改,必须创建一个对象才能完成。**
CGRect rect=centerView.frame;
rect.size.width=300;
centerView.frame=rect;
//获取视图的位置和大小
NSLog(@"%@",NSStringFromCGRect(redView.frame));
// 设置中心点
centerView.center=CGPointMake(self.window.frame.size.width/2.0,self.window.frame.size.height/2.0);
// 设置centerView的中心点与window的中心点对齐
centerView.center=self.window.center;
[self.window addSubview:centerView];
// tag :给centerView 做标记,根据tag获得子视图
centerView.tag=100;
[self change];
return YES;
}
-(void)change{
//修改centerView 的值
// 传参
// 全局变量
// 获得 self.window的所有子视图 , 遍历找到centerView
//tag
UIView * view=[self.window viewWithTag:100];
}
//颜色类
//UIView不设置背景色, 默认为clearColor
//自定义颜色
UIColor *customColor = [UIColor colorWithRed:100/255. green:100/255. blue:30/255. alpha:1.0];
self.window.backgroundColor = customColor;
//创建一个随机颜色的视图
for (NSInteger i = 0; i < 12; i++) {
UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(i*25, i*25, 100, 100)];
UIColor *tempColor = [UIColor colorWithRed:arc4random() *256 / 255. green:arc4random() % 256 / 255. blue:arc4random() % 256 / 255. alpha:0.56];
tempView.backgroundColor = tempColor;
[self.window addSubview:tempView];
[tempView release];
}
for (UIView *tempView in self.window.subviews) {
[tempView removeFromSuperview];
}