view的frame和bound两个属性
来源:互联网 发布:淘宝买家提问怎么删除 编辑:程序博客网 时间:2024/06/15 22:54
view的frame和bound两个属性,frame还好理解,用起来也方便。bounds却有些绕弯,怎么也想不明白,好像饶你了死胡同里,经过一番尝试和思考,终于弄明白bound的含义。
frame: 该view在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统)
bounds:该view在本地坐标系统中的位置和大小。(参照点是,本地坐标系统,就相当于ViewB自己的坐标系统,以0,0点为起点)
center:该view的中心点在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统)
每个view都有一个本地坐标系统(自己的坐标系统)。这个坐标系统作用比较重要,比如触 摸的回调函数中的UITouch里面的>坐标值都是参照这个本地坐标系统的坐标。
当然bounds这个属性也是参照这个本地坐标系统来的。
其实本地 坐标系统的关键就是要知道的它的原点(0,0)在什么位置(这个位置又是相对于上层的view的本地坐标系统而言的,当然最上面的一层view就是 window它的本地坐标系统原点就是屏幕的左上角了)。
通过修改view的bounds属性可以修改本地坐标系统的原点位置。
frame:影响的是自己加到在父视图上面的位置。比较容易理解。
例如:
UIView v1 = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 200, 200)];
[self.view addSubview:v1];v1加到self.view视图上 的起点在self.view的(100,100)坐标点的位置。
UIView v2 = [[UIView alloc]initWithFrame:CGRectMake(10, 10, 100, 100)];
[v1 addSubview:v2];v2加到v1视图上面,v2的起点是v2的(10,10)坐标点。
bounds:影响的是加到自己上面的子视图的位置,以及自己坐标(0,0)零点的位置。
bounds,到底是怎样影响的呢?
例如:设置v2的bounds值为:
v2.bounds = CGRectMake(20, 20, 50, 50);意思是把view2视图原点的(x,y)设置为坐标值(20,20),那么view2的自身的坐标零点(0,0)点就在视图原点(20,20)向左向上各自20的位置,也就是说此时v2的零点在视图外。
如果再有
UIView * v3 = [[UIView alloc]initWithFrame:CGRectMake(10, 10, 50, 50)];
[v2 addSubview:v3];那么view3的Frame的起点是从v2视图外面的的零点坐标(0,0)点算起的。
另外:
UIView * v3 = [[UIView alloc]init];
v3.backgroundColor = [UIColor orangeColor];
v3.bounds = CGRectMake(10, 10, 100,100);
[v2 addSubview:v3];
这种没有给出frame值初始化视图的方式是有缺陷的。即使随后给定了bounds值。
但是由于v3不知道应该放在v2的哪个位置开始。
系统会把v3的中心center坐标放在v2的原点(0,0)。至于为什么 会是这样设计,可能是Xcode默认设置的,为了不让创建视图出现找不到原点位置。
如果v3再次指定了frame,就不会这样了。
- view的frame和bound两个属性
- 关于view的frame和bound两个属性详细介绍
- UIScreen的 bound、frame、scale属性
- UIScreen的 bound、frame、scale属性
- UIScreen的 bound、frame、scale属性
- 关于UIScreen的 bound、frame、scale属性
- UIScreen的 bound、frame、scale属性
- frame/ bound的区别
- ios的frame,bound和center的原理和区别
- iOS之 view视图的创建和它的Frame、bounds、center属性
- IOS—bound和frame区别
- [原创]ios frame,bound和center
- View的bounds和frame的区别
- iOS开发frame、bound和center的区别,以及bound调整宽高其实保证了center不变的规则
- iOS View frame和bounds的区别
- iOS frame,bound,center,transform的区别
- iOS中frame、bound、center以及transform属性
- UIView的bounds和frame属性区别
- jQuery中$.each()和$(selector).each()的区别
- App程序二次退出
- [Java基础] Java四类八种基本类型
- yocto的初始化脚本解释
- 标题华为2016校招机试题(2015年9月) 海大上午场(包含实现代码,运行环境为vc)
- view的frame和bound两个属性
- 到底什么是集群&分布式
- java方法的声明及使用
- django应用:south的使用
- 千奇百怪的博弈论(不定时更新)
- Maven在IntelliJ IDEA中的学习笔记(1)
- Spark组件之GraphX学习4--Structural Operators:mask
- Spark 数据ETL及部分代码示例
- MapReduce源码分析之作业Job状态机解析(一)简介与正常流程浅析