- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {

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

ViewController * vc =[[ViewController alloc]init];

self.window.rootViewController = vc;

self.window.backgroundColor = [UIColor grayColor];

//     makeKeyAndVisible:让窗口是主窗口,并且显示在屏幕上

[self.window makeKeyAndVisible];

//创建view1 绿色

UIView *view1 = [[UIViewalloc]initWithFrame:CGRectMake(100,200, 200,200)];

view1.backgroundColor = [UIColor greenColor];

[self.window addSubview:view1];

//创建view2 橙色

UIView *view2 = [[UIViewalloc]initWithFrame:CGRectMake(50,300, 300, 200)];

view2.backgroundColor = [UIColor orangeColor];

[self.window addSubview:view2];

//由于view2是后创建,所以系统默认为view2覆盖在view1上面

//   在同一个父视图中

//   1、view1 移动到最上面(即移动到view2上面)

//    [self.window bringSubviewToFront:view1];

//   2、把一个视图移动到底下

//     把view2移动到下一层

//    [self.window sendSubviewToBack:view2];

//   3、交换两个视图的位置

// -(void)exchangeSubviewAtIndex:(NSInteger)index1withSubviewAtIndex:(NSInteger)index2;

//    subviews(所有子视图组成的数组)->

//   self.window subviews

//   NSLog(@"%@",self.window.subviews);

//   初始化视图的顺序就是把视图存放到subviews这个数组里面的顺序

//   改变视图的位置 就是改变subviews 数组里面元素的位置(这里是指 交换位置)

//   UIView * view = self.window.subviews[2];

//   NSLog(@"%@",view);

//

//    [self.window exchangeSubviewAtIndex:2withSubviewAtIndex:1];

//--------------插入一个新视图,并调整他的位置----

//   UIView * insertView = [[UIViewalloc]initWithFrame:CGRectMake(80,250,80,80)];

//   insertView.backgroundColor = [UIColor grayColor];

//   [self.window addSubview:insertView];

// (1) 插入一个视图insertView到另一个视图view1的上面

//    [self.window insertSubview:insertView aboveSubview:view1];

// (2) 插入一个视图insertView到另一个视图view2的上面

[self.window insertSubview:insertView aboveSubview:view2];

// (3) 插入到哪一个视图的底下

//    [self.window insertSubview:insertView belowSubview:view1];

-------------------Tag---------------------

//  bag:标记 标签 标号 ->又相当于同一个父视图里面的身份证号

insertView.tag = 100;//给上文中已出现的视图insertView赋tag值为100

//  可以通过tag值 在他的父视图上找到这个视图

//  viewWithTag:在一个父视图上面查找有木有tag值是多少的视图

UIView *v= [self.window viewWithTag:100];

//  v 就是insertView

v.backgroundColor = [UIColor redColor];

//  显示tag值为100的视图的透明度

NSLog(@"%f",v.alpha);

//   移除视图

//   [v removeFromSuperview];

UI视图控件、视图嵌套、SubView、Tag 的使用的更多相关文章

  1. iOS:UITableView表格视图控件

    UITableView:表格视图控件,继承滚动视图控件UIScrollView,(类似于UIPickerView选择器,它主要通过设置数据源代理和行为代理实现协议来设置单元格)    对表格的操作主要 ...

  2. C#:将空间数据加载到树视图控件

    自己 整理了 下 代码 测试了下 还行... #region 操作树视图控件 /// <summary> /// 自定义需要的类型 /// </summary> enum Da ...

  3. Android视图控件架构分析之View、ViewGroup

    在Android中,视图控件大致被分为两类,即ViewGroup和View,ViewGroup控件作为父控件,包含并管理着子View,通过ViewGroup和View便形成了控件树,各个ViewGou ...

  4. iOS:UIImageView图像视图控件

    UIImageView:图像视图控件:    它是UIView的子类,因此也是视图控件,可以用来显示图像.因为它具有帧动画属性和操作方法,因此可以用来制作动画,其实动画就是很短的时间内,执行显示连续的 ...

  5. VS2010/MFC编程入门之二十九(常用控件:列表视图控件List Control 下)

    上一节是关于列表视图控件List Control的上半部分,简单介绍了列表视图控件,其通知消息的处理和有关结构体的定义.本节继续讲解下半部分,包括列表视图控件的创建.CListCtrl类的主要成员函数 ...

  6. VS2010/MFC编程入门之二十八(常用控件:列表视图控件List Control 上)

    前面一节中,鸡啄米讲了图片控件Picture Control,本节为大家详解列表视图控件List Control的使用.      列表视图控件简介 列表视图控件List Control同样比较常见, ...

  7. iOS:风火轮活动刷新视图控件UIActivityIndicatorView的详细使用

    动态风火轮视图控件:UIActivityIndicatorView   介绍:它是一种类似于风火轮旋转的视图控件,可用作刷新数据时显示加载过程所用,继承自UIView.   类型: typedef N ...

  8. iOS:文本视图控件UITextView的详细使用

    文本视图控件:UITextView 介绍:它是一个文本域的编辑视图,可以在该区域上进行编辑(包括删除.剪贴.复制.修改等),它与文本框UITextField的不同之处是:当它里面的每一行内容超出时,可 ...

  9. iOS:网页视图控件UIWebView的详解

    网页视图控件:UIWebView 功能:它是继承于UIView的,是一个内置的浏览器控件,以用来浏览从网络下载下来的网页或者本地上加载下来的文档. 枚举: //网页视图导航类型 typedef NS_ ...

  10. win32 sdk列表视图控件(ListCtrl或ListView)资料整理

    列表视图控件是一种非常常用的控件,在需要以报表形式显示数据时,列表控件通常是最好的选择,许多专用的数据报表控件,也是在它的基础上派生而来.与树视图类似,列表控件可以由多个子项目组成,可以设置为Icon ...

随机推荐

  1. 通过ADB获取Android手机信息

    原文:https://blog.csdn.net/fasfaf454/article/details/51438743 1.获取手机系统信息( CPU,厂商名称等)adb shell "ca ...

  2. Java面试题_第三阶段(Spring、MVC、IOC、AOP、DI、MyBatis、SSM、struts2)

    1.1 何为Spring Bean容器?Spring Bean容器与Spring IOC 容器有什么不同吗? 答:1)用于创建bean对象,管理bean对象的那个容器. 2)Spring IOC 容器 ...

  3. numpy的基本API(四)——拼接、拆分、添加、删除

    numpy的基本拼接.拆分.添加.删除API iwehdio的博客园:https://www.cnblogs.com/iwehdio/ 1.np.concatenate((a, b), axis=0) ...

  4. 使用SC命令操作(安装、开启、配置、关闭、删除)Windows下的服务

    目录 一.直接使用cmd命令行操作windows服务 二.使用bat批处理-操作windows服务 一.直接使用cmd命令行操作windows服务 1.安装服务 sc create 服务名 binPa ...

  5. C# Thread 线程

    Thread  创建和控制线程,设置其优先级并获取其状态 Thread构造函数接收一个无参数或带一个object类型参数的委托 { Console.WriteLine("), DateTim ...

  6. git clone 仓库的部分代码

    对于较大的代码仓库来说,如果只是想查看和学习其中部分源代码,选择性地下载部分路径中的代码就显得很实用了,这样可以节省大量等待时间. 比如像 Chromium 这种,仓库大小好几 G 的. clone ...

  7. List<string>和string[]数组之间的相互转换,需要的朋友可以参考下

    1,从System.String[]转到List<System.String> System.String[] str={"str","string" ...

  8. jvm虚拟机笔记<三> 类文件结构与类加载机制

    java虚拟机具有语言无关系,它只和“class文件“这种特定的二进制文件格式绑定. 不同语言的编译器将对应的程序编译成字节码文件(*.class),送给jvm执行. class文件本质上就是一张表, ...

  9. C# FlagAttriute 的 小妙招

    FlagAttriute ,指示可将枚举视为位域(即一组标志). 官网中文解说:https://docs.microsoft.com/zh-cn/dotnet/api/system.flagsattr ...

  10. 挖掘Dark Sky Maps(热的要死后,疯传的一个气温地图网站)

    最近,各种朋友圈,社会媒体,都在疯传一张图,这张图显示的全球的气温图,本没有什么特别的,但是这张图的网站来源所展示的数据与气象局或者各种天气预报的温度值相差倒是不少,引来一片网友的吐槽. 但是,作为专 ...