老生常谈:frame和Bounds的区别
UIView及NSView等控件常有的frame和bounds有何不同呢?
UIView的bounds是一个矩形,它表示在自身坐标系中的位置(x、y)和大小(width、height)。
UIView的frame也是一个矩形,它表示该视图在父视图坐标系中的位置(x、y)和大小(width、height)。
因此,假设现在有view大小为100x100,在父视图的位置为(25,25),如下代码打印出bounds和frame:
- (void)viewDidLoad {[super viewDidLoad];NSLog(@"bounds.origin.x: %f", label.bounds.origin.x);NSLog(@"bounds.origin.y: %f", label.bounds.origin.y);NSLog(@"bounds.size.width: %f", label.bounds.size.width);NSLog(@"bounds.size.height: %f", label.bounds.size.height);NSLog(@"frame.origin.x: %f", label.frame.origin.x);NSLog(@"frame.origin.y: %f", label.frame.origin.y);NSLog(@"frame.size.width: %f", label.frame.size.width);NSLog(@"frame.size.height: %f", label.frame.size.height);
}
输出结果如下:
bounds.origin.x: 0
bounds.origin.y: 0
bounds.size.width: 100
bounds.size.height: 100frame.origin.x: 25
frame.origin.y: 25
frame.size.width: 100
frame.size.height: 100
我们可以看到,在这两种情况下,视图的bounds还是frame中宽度和高度都是相同的,不同的是视图的x、y的位置。在bounds的情况下,x和y坐标是(0,0)因为这些坐标相对于视图本身。然而,frame的x和y坐标相对于视图在父视图中的位置(之前我们说过是在(25,25))。
图文并茂
当bounds和frame为如下值时:
Frameorigin = (0, 0)width = 80height = 130Bounds origin = (0, 0)width = 80height = 130
效果如下:
这幅图的框架和边界是完全一样的。让我们看一个它们不同的例子。
Frameorigin = (40, 60) // That is, x=40 and y=60width = 80height = 130Bounds origin = (0, 0)width = 80height = 130
使用场合
因为frame与视图在父视图中的位置相关,所以当您向外进行更改时,比如更改其宽度或查找视图与父视图顶部之间的距离时,就会使用它。
当您向内进行更改时,如绘制内容或在视图中安排子视图时,请使用bounds。如果你对视图做了一些变形,也可以使用bounds来获得视图的大小。
老生常谈:frame和Bounds的区别相关推荐
- frame 和 bounds的区别
这篇是见过写的最为详细易懂的文章: frame与bounds的区别详解 - 简书 简单概括下: 1.bounds和frame都是属于CGRect类型的结构体,系统的定义如下,包含一个CGPoint(起 ...
- 【转】frame与bounds的区别比较
翻译文档上的bounds是指这个view在它自己坐标系的坐标和大小 而frame指的是这个view在它superview的坐标系的坐标和大小区别主要在坐标系这一块.很明显一个是自己为原点的坐标系,一个 ...
- frame与bounds的区别比较
翻译文档上的 bounds是指这个view在它自己坐标系的坐标和大小 而frame指的是这个view在它superview的坐标系的坐标和大小 区别主要在坐标系这一块. 很明显一个是自己为原点的坐标 ...
- 完结之frame和bounds的区别
回顾上集,我写了frame和bounds在x.y上的区别,以及简单的描述frame的width和height.这次,继续前集但又不同于前集.继续前集,我是想把bounds的width和height讲完 ...
- iOS bug 日志 -frame 和 bounds的区别
使用显式动画,如果设置layer 的bounds和frame效果是不一样的 如果设置 self.layer.bounds = CGRectMake(0, 0, width, width); 效果如图 ...
- frame 和bounds 的区别
二者都是方的. bounds 对内 不包含自身 相对 superView的 位置 frame 对外 包括自身相对 superView的坐标 self.bounds= CGRectMake(0,0,se ...
- frame、bounds表示大小和位置的属性以及center、position、anchorPosition
在iOS开发开发过程中经常会用到界面元素的frame.bounds表示大小和位置的属性以及center.position.anchorPosition等单纯表示位置的属性.这些属性究竟什么含义?彼此间 ...
- ios开发之UIView的frame、bounds跟center属性的区别(附图)
博文暂时想到什么写什么,不顺理成章,不顺章成篇. 先看几个概念 坐标点Poit:向右侧为X轴正方向的值x,原点下侧为Y轴正方向的值y 大小Size:由宽度width和高度height构成,表示一个矩形 ...
- iOS中frame和Bounds之间的区别
frame frame是每个view必备的属性,代表的是当前视图的位置和大小,没有设置他,当前视图是看不到的.位置需要有参照物才能确定,数学中我们用坐标系来确定坐标系中的某个点的位置,iOS中有他特有 ...
- iOS开发-View中frame和bounds区别
开发中调整View的时候的经常会遇到frame和bounds,刚开始看的时候不是很清楚,不过看了一下官方文档,frame是确定视图在父视图中的位置,和本身的大小,bounds确定可以确定子视图在当前视 ...
最新文章
- SUBSTRING函數用法
- ie 报错 vuex requires a Promise polyfill in this browser
- Oracle从软件安装到运行的全流程
- 在ASP.NET Core下使用SignalR技术
- angular4更改表单中显示的值_angular4 Form表单相关
- springboot 打包_springboot打包-体积太大怎么办
- php mysql 替换 pdo,php操作MySQL数据库之PDO方式
- 当电信诈骗犯遇上程序员,技术决定成败!
- 第二次Soring冲刺计划第一天(团队)
- 解决tshark报错:tshark: Some fields aren‘t valid
- (21)FPGA资源共享
- 投资大佬段永平:抄底腾讯,不等了!
- HIVE 的笛卡尔积on无条件
- 公钥、私钥和数字签名是什么
- 深刻揭露步态识别的“谎言”(篇一)
- 电脑罗盘时钟html怎么设置成桌面,抖音网红款Word Clock罗盘时钟电脑桌面屏保设置教程-完整版...
- 3Dmax有哪些方法设置添加VR材质
- 003 IP网络技术基础
- 送你一波运维背锅专用图~
- 车内静谧性超越埃尔法?走进腾势D9身价上亿的NVH实验室
热门文章
- 怎么能防止网站被注入eval(base64_decode这种类型的木马?
- vim 配置(有插件)
- 怎么查询IP段所对应的IP总数、网络地址、可用IP数量及范围、网关、子网掩码、广播地址呢?/29 服务器包含多少IP地址?
- Kotlin基础2(持续更新)
- 百度Unit 2.0平台学习理解
- 利用组策略部署软件——将软件发布给用户
- 电信计费系列3-短信计费
- 美国网络再次“瘫痪”,华为意外“出头”,网络服务器世界第一
- 盲盒抽奖微信小程序源码
- no jdk specified