热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

UI基础之UIView

MVC:是一种设计模式M(model):存储数据V(view):展示数据(UIView)C(controler):用来衔接MVC,作为M和V之间的桥梁,负责数据的处理和传递等等(U

 MVC:是一种设计模式

    M(model):存储数据

    V(view) :展示数据 (UIView)

    C(controler):用来衔接MVC,作为MV之间的桥梁,负责数据的处理和传递等等 (UIViewController)

    CGPoint:用来设置坐标;

    CGSize: 用来设置尺寸;

    CGRect: 用来设置坐标和尺寸;

    

    frame:以父视图作为参考系,

   bounds:以自身作为参考系,坐标始终是(00

 

@property (strong, nonatomic) UIWindow *window;

//在应用程序代理中实例化,一个窗口,多个视图,app只有一个UIWindowUIWindow是根基

 

技术分享

//创建一个自己的view

    CGRect frame2=CGRectMake((375-150)/2.0,(667-150)/2.0 , 150, 150);

    UIView *view=[[UIView alloc] initWithFrame:frame2];

    

    //将当前视图添加到window上面才能显示

    [self.window addSubview:view];

    

    //为当前视图设置背景色

    view.backgroundColor=[UIColor grayColor];

 

//定义一个人根视图

    _rootView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, kwidth, kheight)];

    _rootView.backgroundColor=[UIColor grayColor];

    [self.window addSubview:_rootView];

    

    //

    UIView *view1=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)];

    //可用tag值来找到相应视图

    view1.tag=1001;

    view1.backgroundColor=[UIColor redColor];

    [_rootView addSubview:view1];

    

    UIView *view2=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 150, 150)];

    view2.tag=1002;

    view2.backgroundColor=[UIColor blackColor];

    [_rootView addSubview:view2];

    

    //获取所有子视图

    NSArray *subviews=[_rootView subviews];

    NSLog(@"%@",subviews);

    

    //remove移除子视图

//    [view2 removeFromSuperview];

    

    UIView *view3=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];

    view3.tag=1003;

    view3.backgroundColor=[UIColor greenColor];

    [_rootView addSubview:view3];

    

    //

    UIView *view4=[[UIView alloc] initWithFrame:CGRectMake(0, 0, 160, 160)];

    view4.backgroundColor=[UIColor yellowColor];

    

//    [_rootView insertSubview:view4 atIndex:1];

//    [rootView insertSubview:view4 aboveSubview:view1];

//    [rootView insertSubview:view4 belowSubview:view2];

//    [rootView bringSubviewToFront:view1]; 图层移到最顶层

//    [rootView sendSubviewToBack:view4];   图层移到最底层

    

    //0是子视图第一层

//    [rootView exchangeSubviewAtIndex:2 withSubviewAtIndex:0];

//    把两个索引对应的视图调换位置

    

    

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

    self.window.rootViewController=vc;

    

 

    

    return YES;

}

//点击空白处触发

- (void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    //获取所有子视图

    NSArray *subView= _rootView.subviews;

    //取出所有子视图的第一个

//    UIView *lastView=[subView lastObject];

//    UIView *firstView=[subView firstObject];

    

    //每次将第一移动到最后

//    [_rootView sendSubviewToBack:lastView];

    

    //每次点击第一个和最后一个互换

//    [_rootView exchangeSubviewAtIndex:0 withSubviewAtIndex:subView.count-1];

    

    

    //通过tag值来控制颜色变化

    UIView *view=[_rootView viewWithTag:1003];

//    view.backgroundColor=[UIColor blackColor];

    //改变透明度

//    view.alpha-=0.1;

    //方法一隐藏掉,而不是remove掉,还存在

//    view.alpha=0;

    //方法二

    //[view removeFromSuperview];

    //方法三

    //view.alpha=1-view.alpha;

    //方法四

//    if (view.hidden==YES) {

//        view.hidden=NO;

//    }else{

//        view.hidden=YES;

//    }

    //方法五

//    view.hidden=!view.hidden;

技术分享

 

技术分享技术分享

 

UI基础之UIView


推荐阅读
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
author-avatar
君慎豫行
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有