UIView的作用
UIView
【UIView的作用】
主要用来显示应用程序的内容,可以作为label、button等控件的容器、表示屏幕上的一块矩形区域,同时可以处理该区域的绘制和触屏事件。
MVC,MVVM等设计架构中的V,指的就是View部分
【视图的初始化】
- initWithFrame:(CGRect)frame
【视图坐标】(Frame和bounds的关系)
Frame以其父视图为起点,得出它自己的位置。
Bounds即以iOS系统的坐标原点为起点,坐标为(0,0)
Center表示视图中心点所在的位置,设置此属性可以改变视图的位置。

举例验证:
注意:缺省情况下,视图的边框并不会被父视图的边框裁剪。如果你希望让一个视图裁剪其子视图,需要将chipsToBounds 属性设置为YES
【UIView的层次结构】
一个视图就是一个容器,当一个视图包含其他视图的时候,两个视图之间就建立了一个父子关系,被包含的视图被称为“子视图(subView)”,包含的视图称为”父视图或者超视图(superView)”
从视觉上看,子视图隐藏了父视图的内容,设置透明属性可以看到父视图的内容。
每一个父视图都有一个有序的数组存储着它的子视图,存储的顺序就会影响到每个子视图的显示效果,比如两个兄弟视图,后来被加入的视图就会在另外视图的上面
一个视图可以嵌入多个子视图(subView),但是只能有一个superView;
【常用属性】
alpha //透明度
backgroundColor //背景色
subViews //子视图集合
hidden //是否隐藏
tag //标签值
superview //父视图
multipleTouchEnabled //是否开启多点触控
userInteractionEnabled //是否响应触摸事件
通过transform属性来改变
CGAffineTransformScale //对视图进行比例缩放
CGAffineTransformRotate //对视图做变焦转换 M_PI代表180度 顺时针
CGAffineTransformTranslate //对视图在原来的位置上做平移 移动单位为像素
【UIView的常用方法】
当调用addSubView的时候,父视图就会变成子视图的持有者,这时候子视图的引用计数就会增加1,调用removeFromSuperView的时候,则会进行引用计数相应减少
addSubview: //添加子视图
insertSubView:atInsex: //视图插入到指定索引位置
insertSubView:aboverSubview:: //视图插入指定视图之上
insertSubview:belowSubview: //视图插入指定视图之上
bringSubviewToFront: //把视图移动到最顶层
sendSubviewToBack: //把视图移动到最底层
exchangeSubviewAtIndex:withSubviewAtIndex: //把两个索引对应的视图调换位置
removeFromSuperview //把视图从父视图中移除
viewWithTag: //根据指定的tag值,查找视图
UIView *myView = [UIView alloc]initWithFrame:CGRectMake(0,0,100,100)];
myView.tag = 10;
[self.window addSubview:myView];
UIView *view = [self.window viewWIthTag:100];
【自定义UIView完成UIButton代理以及block回调的实现】
//布局的时候会调用,在iOS5.1
- (void)setNeedsLayout
- (void)layoutSubviews{
}
- (void)setNeedsDisplay;//该方法的调用,可以让视图完成重绘
- (void)drawRect:(CGRect)rect{
}
UIView的作用的更多相关文章
- 【转】 UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
原文:http://blog.sina.com.cn/s/blog_923fdd9b0101b2b4.html 1.在Mac OS中NSWindow的父类是NSResponder,而在iOS 中UIW ...
- [转] 关于UIView
[转载] 原文地址 :http://blog.csdn.net/itianyi/article/details/8982518 UIView是开发中使用得最多的控件了,深入的理解很有必要. UIVie ...
- UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
UIview需要知道的一些事情:setNeedsDisplay.setNeedsLayout 1.在Mac OS中NSWindow的父类是NSResponder,而在i OS 中UIWindow 的父 ...
- UI控件之UIView与动画
UIView:用来展示用户的界面,响应用户的操作(继承自UIResponder) UIView的作用:绘图.动画.处理事件 UIView可以包含和管理子视图,并且决定子视图的位置大小 获取所有的子视图 ...
- UIWindow与UIView
UIView与UIWindow * 一般应用程序只有一个UIWindow对象.所有的控件都是在UIWindow上展现的.每个UIView对象都有一个window属性,表示当前view显示在哪个窗体上. ...
- UIDynamic 基础认识
UIDynamic 是从iOS 7开始引入的一种新技术,属于UIKit框架,可以模拟现实生活中的物理现象,如:碰撞.抖动.摆动等 动力效果:有一个效果器,叫做“动力效果器”里面面可以添加“动力效果” ...
- 从此走上一条iOS程序猿不归路。。。
新的城市,新的生活!前不久刚刚结束了苦逼的面试找工作之旅,期间也小有收货,如今正处年底工作闲暇之余,将前一阵子陆陆续续的总结整理了一下,本人菜鸟程序猿一只,水平有限,本文总结的知识不算深入,比较浅显, ...
- ARKit从入门到精通(2)-ARKit工作原理及流程介绍
转载:http://blog.csdn.net/u013263917/article/details/73038519 1.1-写在前面的话 1.2-ARKit与SceneKit的关系 1.3-ARK ...
- DZNEmptyDataSet框架阅读
前段时间使用公司封装的空白页占位视图工具,工具是对DZNEmptyDataSet框架的封装.这个框架以前在许多项目也都用过,却没有认真阅读过源码,真的很遗憾.这两天趁五一放假有空,将DZNEmpt ...
随机推荐
- 瞎折腾实录:构建 Armel 版本的 .NET Core 教程和资料资源
目录 首先我要说明,我失败了~ 我把我的进度和经验放出来,希望能够帮助别人完成编译工作~ 背景:最近接手一个华为某型号的嵌入式设备,需要在上面搭建 .NET Core 环境. 设备是 Armel 架构 ...
- Spring Boot2 系列教程(二十三)理解 Spring Data Jpa
有很多读者留言希望松哥能好好聊聊 Spring Data Jpa! 其实这个话题松哥以前零零散散的介绍过,在我的书里也有介绍过,但是在公众号中还没和大伙聊过,因此本文就和大家来仔细聊聊 Spring ...
- 用这个库 3 分钟实现让你满意的表格功能:Bootstrap-Table
本文作者:HelloGitHub-kalifun 这是 HelloGitHub 推出的<讲解开源项目>系列,今天给大家推荐一个基于 Bootstrap 和 jQuery 的表格插件:Boo ...
- window,sts安装python
1.先在python官网下载最新的python安装,安装的时候勾上所有选项 官网:https://www.python.org/downloads/ 2.在sts里安装pyDev插件,我当时直接sea ...
- 心里有点B树
在说B树之前最好先看看2-3树, 2-3树是B树的一种特例, 什么B树, B树就是2-3树, 2-3-4 树 , 2-3-4-5... 树的统称, 而B+树又是B树的一种变形 性质: 什么是二节点, ...
- Windows服务的删除与添加
Windows服务的删除与添加 以管理员身份运行 CMD 服务的删除 sc delete 服务名称 服务添加 sc create 服务名称 binpath="服务EXE文件所在的目录&quo ...
- nyoj 12-喷水装置(二)(贪心)
12-喷水装置(二) 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:10 submit:30 题目描述: 有一块草坪,横向长w,纵向长为h,在它的橫 ...
- setState何时同步,何时异步,为什么?
setState何时同步,何时异步,为什么 答案:在React库控制时,异步:否则同步. 示例代码如下: constructor(props){ super(porps); this.state = ...
- 【Flume】Flume基础之安装与使用
1.Flume简介 (1) Flume提供一个分布式的,可靠的,对大数据量的日志进行高效收集.聚集.移动的服务,Flume只能在Unix环境下运行. (2) Flume基于流式架构,容错性强, ...
- RHEL7.2 SSH无密码登录非root用户
1 修改三台虚拟机的/ect/hosts文件 [hadoop@hadoop01 ~]$ cat /etc/hosts 127.0.0.1 localhost localhost.localdomain ...