UIView的frame与bounds
来源:互联网 发布:什么软件看朴宝英直播 编辑:程序博客网 时间:2024/06/05 19:58
一、首先列一下公认的资料:
先看到下面的代码你肯定就明白了一些:
-(CGRect)frame{
return CGRectMake(self.frame.origin.x,self.frame.origin.y,self.frame.size.width,self.frame.size.height);
}
-(CGRect)bounds{
return CGRectMake(0,0,self.frame.size.width,self.frame.size.height);
}
很明显,bounds的原点是(0,0)点(就是view本身的坐标系统,默认永远都是0,0点,除非认为setbounds),而frame的原点却是任意的(相对于父视图中的坐标位置)。
frame: 该view在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统)
bounds:该view在本地坐标系统中的位置和大小。(参照点是,本地坐标系统,就相当于ViewB自己的坐标系统,以0,0点为起点)
center:该view的中心点在父view坐标系统中的位置和大小。(参照电是,父亲的坐标系统)
二、我的demo
@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; //view1 UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 200, 250)]; //这里的setBounds只是改变‘view1自身’坐标系的起点,并不会影响frame [view1 setBounds:CGRectMake(-50, -50, 200, 250)]; view1.backgroundColor = [UIColor cyanColor]; [self.view addSubview:view1];//添加到self.view NSLog(@"view1 frame:%@====view1 bounds:%@",NSStringFromCGRect(view1.frame),NSStringFromCGRect(view1.bounds)); //view2 UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 150)]; view2.backgroundColor = [UIColor yellowColor]; [view1 addSubview:view2];//添加到view1上,[此时view1坐标系左上角起点为(-50,-50)] NSLog(@"view2 frame:%@====view2 bounds:%@",NSStringFromCGRect(view2.frame),NSStringFromCGRect(view2.bounds));}/*结果2017-11-12 22:34:52.706 frame_bounds demo[849:36333] view1 frame:{{50, 50}, {200, 250}}====view1 bounds:{{-50, -50}, {200, 250}}2017-11-12 22:34:52.706 frame_bounds demo[849:36333] view2 frame:{{0, 0}, {100, 150}}====view2 bounds:{{0, 0}, {100, 150}}*/
对应效果如下
三、我的理解:
1.frame指父子间相对的orgin和绝对大小size;
2.bounds指自身的基准orgin(默认为0,0)和绝对大小size;如果设置了bounds的起点,受影响的仅仅是自身的“亲儿子视图”的“起点”, 但不会改变自身的frame,如View1;
(bounds注意点:log输出日志表明,每个新的view默认的bounds其实都是(0,0))
3.center,参考的坐标系同frame一个原理。
4. frame 是CGRect frame的origin是相对于父视图的左上角原点(0,0)的位置,改变视图的frame会改变center
center 是CGPoint 指的就是整个视图的中心点,改变视图的center也会改变frame
bounds 是CGRect 是告诉子视图本视图的原点位置, 但是本视图与本视图的‘父亲’的相对位置frame不会改变的。
- UIView的frame与bounds
- UIView的frame与bounds
- UIView的frame与bounds
- UIView frame与bounds的区别
- UIView的frame和bounds
- 视图UIView的frame、bounds与center属性
- 视图UIView的frame、bounds与center属性
- iOS 基础-----关于UIView 的 frame 与 bounds
- iOS 基础-----关于UIView 的 frame 与 bounds
- 视图UIView的frame、bounds与center属性
- 视图UIView的frame、bounds与center属性
- 视图UIView的frame、bounds与center属性
- iOS 基础-----关于UIView 的 frame 与 bounds
- 视图UIView的frame、bounds与center属性
- UIView中bounds和frame的差别
- UIView的frame和bounds区别
- UIView的bounds和frame学习
- UIView的bounds和frame属性区别
- 从源码角度看Spark on yarn client & cluster模式的本质区别
- Can't set headers after they are sent
- 关于JavaWeb项目乱码的问题
- Decode String_Week10
- 第13章:Java反射机制(day19-day20)
- UIView的frame与bounds
- 机器学习实战(三)kaggle titanic随机森林
- 第14章:网络编程(day20)
- 再见软考
- Aerospike迁移--2
- win10 /Oracle VM VirtualBox 虚拟机ubuntu17.04 NAT host-only网络配置
- 流行排序和佩奇排序简述(manifold rank & Page rank)
- 轻松加精确完成水晶报表对象的对齐、移动及大小调整——使用准线设计
- 201711122215->mysql增加database