IOS UI-UIView

先认识下UIWindow

1.管理和协调应用程序的显示.
2.UIWindow类是UIView的子类,可以看做是特殊的UIView
3.一般应用程序只有一个UIWindow对象.

创建UIWindow对象

//创建一个window,并使其铺满屏幕
    _window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds] ];
    [_window setBackgroundColor:[UIColor colorWithRed:102/255. green:220/255. blue:61/255. alpha:1.]];
    //创建一个视图控制器
    ViewController *root = [[ViewController alloc]init];
    //设置window的根视图控制器
    [_window setRootViewController:root];
    //绘制window
    [_window makeKeyAndVisible];

什么是UIView

UIView表示屏幕上的一块矩形区域。
它在App中占有绝对重要的地位。
因为iOS中几乎所有可视化控件都是UIView的子类。
负责渲染区域的内容 并且响应该区域内发生的触摸事件。

UIView功能

管理矩形区域里的内容
处理矩形区域中的事件
子视图的管理
实现UIView动画
UIView作为父类,子类也具有这些功能

创建一个UIView

#warning 创建控件第一步,申请内存空间并初始化
    UIView *view = [[UIView alloc]init];
#warning 第二步,设置坐标大小
    [view setFrame:CGRectMake(90, 90, 80, 80)];
#warning 第三步,设置控件属性
    [view setCenter:self.window.center];  //中心点
#warning 第四步,添加子视图
    [self.window addSubview:view];
    [view release];

frame的重要性

frame是UIView的重要属性,是我们用于视图布局的关键。 它决定了视图的大小和位置。
frame是CGRect类型。
frame是基于它父视图的坐标系而言的。

UIView常用属性

这里写图片描述

运用

[view setCenter:CGPointMake([UIScreen mainScreen].bounds.size.width/2, [UIScreen mainScreen].bounds.size.height/2)];  //放中间
[view setAlpha:0.5];
[view setHidden:NO];
[view setTag:1];

 //tag,相当于给视图做一个标记,可以通过父视图调用viewWithTag方法获取到视图的对象
    UIView *newView = [self.window viewWithTag:1];
    [newView setBackgroundColor:[UIColor magentaColor]];

父视图与子视图

使用addSubview:添加视图,要确定添加到谁上面。
被添加的视图称为子视图,添加到的视图称为父视图。 例如:A视图 addSubview: B视图,A为B的父视图,B为A的子视图。

添加视图的方法

这里写图片描述

[self.window insertSubview:view4 aboveSubview:view3]; //给window视图上面插入一个子视图 把它放在谁的上面

    //将父视图中的子视图移动到最前面,位置不会变
    [self.window bringSubviewToFront:view3];

    //将父视图中的子视图移动到最后面,位置不会变
    [self.window sendSubviewToBack:view2];

    //交换两个指定索引位置的子视图
    [self.window exchangeSubviewAtIndex:1 withSubviewAtIndex:4];
    //将子视图从父视图上移除(完全移除 要拿回来要重新添加)
    [view removeFromSuperview];
    [self.window addSubview:view];

视图层次管理

图片描述

bounds

当一个视图被创建以后会根据父视图坐标系确定自己的位置大小
同时会生成一套以自己左上角为原点坐标的坐标系
bounds就是该视图在自己这套坐标系中的位置以及大小.
bounds只会影响自身视图的位置

假如父视图将自己的坐标bounds为20,20 那么如果原来和它对齐的子视图想和它对其就要将坐标改为20,20 但是父视图改了坐标对它是没有影响的 只是对子视图有影响
它改为20,20 其实就是将0,0(假设它叫这个名字)改个名字

马赛克练习

这里写图片描述

_window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];
    [_window setBackgroundColor:[UIColor cyanColor]];
    ViewController *root = [[ViewController alloc]init];
    [_window setRootViewController:root];
    [_window makeKeyAndVisible];


    for (float y = 0; y <= UIScreen.mainScreen.bounds.size.height; y += UIScreen.mainScreen.bounds.size.height/8.0) {
        for (float x = 0; x <= UIScreen.mainScreen.bounds.size.width; x += UIScreen.mainScreen.bounds.size.width/5.0) {
            UIView *a = [[UIView alloc]initWithFrame:CGRectMake(x, y, [[UIScreen mainScreen]bounds].size.width/5.0, [[UIScreen mainScreen]bounds].size.height/8.0)];
            [a setBackgroundColor:[UIColor colorWithRed:arc4random()%255 / 255. green:arc4random()%255 / 255. blue:arc4random()%255 / 255. alpha:0.9]];
            [self.window addSubview:a];
            [a release];

        }
    }

总结:

1.UIWindow的作用以及创建
2.UIView的作用及创建
3.UIView的frame以及bounds的作用
4.UIView视图添加方法,视图层次管理方法,常用属性
5.iOS程序启动流程

第一天学习UI 这是ios的重中之重,很多人很多实例告诉我们,在UI时期没有什么好得学习方法就只有疯狂的练习,一段简单的代码也要打很多遍!!!!共勉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值