子视图实际位置=父视图实际位置-父视图bounds坐标+子视图frame坐标

一、bounds

  只影响“子视图”相对屏幕的位置,修改时不会影响自身相对屏幕的位置

  bounds坐标:自己定义的坐标系统,setbound指明了本视图左上角在该坐标系统中的坐标,

        默认值(0,0)

二、frame

  修改时改变了自己的在父视图坐标系统(bounds坐标系统)的位置,自身位置和

  子视图位置都会被改变。

  frame坐标:  子视图左上角在父视图坐标系统(bounds坐标系统)中的坐标,默认值(0,0)

三、图表解释

先看到下面的代码你肯定就明白了一些:

-(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);
}

很明显,某个view的bounds的原点永远是(0,0)点(就是参照该view本身的坐标系统,默认永远都是0,0点,除非认为setbounds),而该view的frame的原点却是任意的(相对于父视图中的坐标位置)。

再来看张图就明白了,

frame: 该view在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统)
bounds:该view在本地坐标(自身)系统中的位置和大小。(参照点是,本地坐标系统,就相当于ViewB自己的坐标系统,以0,0点为起点)
center:该view的中心点在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统)

bounds这个属性是参照这个本地坐标系统来的。其实本地坐标系统的关键就是要知道的它的原点(0,0)在什么位置。(这个位置又是相对于上层的view的本地坐标系统而言的,当然最上面的一层view就是self.window。它的本地坐标系统原点就是屏幕的左上角了。

通过修改view的bounds属性可以修改本地坐标系统的原点位置,从而会影响该view所有的子view的坐标。

转载于:https://www.cnblogs.com/stevenwuzheng/p/5348338.html

ios视图frame和bounds的对比相关推荐

  1. iOS中frame和Bounds之间的区别

    frame frame是每个view必备的属性,代表的是当前视图的位置和大小,没有设置他,当前视图是看不到的.位置需要有参照物才能确定,数学中我们用坐标系来确定坐标系中的某个点的位置,iOS中有他特有 ...

  2. iOS开发——frame和bounds详解

    在iOS的UI开发中,frame和bounds是两个非常容易搞混的概念,而很多开发者在实际项目中也很少去区分,因此会导致出现一些意想不到的问题.本篇博客以实际代码的方式来学习frame和bounds的 ...

  3. [iOS开发]frame和bounds

    简述 Frame: 视图的位置和大小使用是父视图的坐标系,所以将视图放置在父级中这一点就很重要. Bounds:视图的位置和大小,使用的是其自己的坐标系,而对于这一点而言将视图的内容或子视图放置在其自 ...

  4. IOS UiView frame哪里来?

    初学ios开发,frame center bounds 一直搞不清楚.最近在看wwdc session 121 UIKit Rendering 找到答案. frame 是计算属性 frame定义是父视 ...

  5. (0046) iOS开发之View的frame和bounds之解惑

    iOS view的frame和bounds之解惑 frame: 该view在父view坐标系统中的位置和大小.(参照点是,父亲的坐标系统) bounds:该view在本地坐标系统中的位置和大小.(参照 ...

  6. ios 设置属性的center_ios-坐标系统(详解UIView的frame、bounds跟center属性[图])

    1.概要 翻开ios官方开发文档,赫然发现上面对这三个属性的解释如下: frame:描述当前视图在其父视图中的位置和大小. bounds:描述当前视图在其自身坐标系统中的位置和大小. center:描 ...

  7. ios开发之UIView的frame、bounds跟center属性的区别(附图)

    博文暂时想到什么写什么,不顺理成章,不顺章成篇. 先看几个概念 坐标点Poit:向右侧为X轴正方向的值x,原点下侧为Y轴正方向的值y 大小Size:由宽度width和高度height构成,表示一个矩形 ...

  8. iOS开发-View中frame和bounds区别

    开发中调整View的时候的经常会遇到frame和bounds,刚开始看的时候不是很清楚,不过看了一下官方文档,frame是确定视图在父视图中的位置,和本身的大小,bounds确定可以确定子视图在当前视 ...

  9. iOS 更新自动布局,获取子视图frame

    XIB 自定义Cell 或 View,有时往往要拿到里面的子视图.再在子视图上面动态添加其它控件. 在工程中,获取到的一直是初始宽度或高度是在某一手机尺寸下.在另一个手机尺寸下,不起作用,还是当初的值 ...

最新文章

  1. LintCode: Binary Tree Inorder Traversal
  2. centos7桌面登录root用户_CentOS7从一般用户切换到root用户
  3. atm机java+gui+oracle编程代码_java应用在哪里?
  4. 基于verilog的FFT设计与实现
  5. 使用JUnit规则测试预期的异常
  6. 字节跳动也取消大小周了,996内卷要终结了?
  7. 软件架构(8)---软件架构之架构视图
  8. 第十八章 35用重载比较运算符实现字符串的比较
  9. 于Linux下s、t、i、a权限
  10. HorizontalScrollView实现侧滑效果
  11. 【Fiddler抓包】Fiddler基础用法-基于Fiddler5中文汉化版
  12. DB2 数据库软件下载
  13. 什么杀毒软件最好|什么杀毒软件好用
  14. 罗永浩:做直播带货很赚钱,一晚上利润轻松几百万 比卖锤子手机过瘾
  15. mysqld --initialize 错误:mysqld: Can‘t create/write to file ‘G: ool\mysql\data\is_writable‘
  16. 用户管理和用户组管理
  17. php面试php数组变ahp,php实现把数组按指定的个数分隔
  18. 锦标赛选择算法及 matlab 实现
  19. android 如何查询电话当中的联系人,并查询出联系次数
  20. Mac下安装与使用Medis

热门文章

  1. Mocha Pro 2020中文版
  2. java的快速开发框架
  3. react小测试忘记一个细节不显示
  4. HTTPS(身披SSL协议的HTTP)
  5. codeforces 1029 A. Many Equal Substrings
  6. php数组全排列,元素所有组合
  7. Matlab符号运算总结
  8. 降低网站跳出率的六个方法(亲身使用)
  9. java String format占位符
  10. 在Ubuntu 16.10 安装 git 并上传代码至 git.oschina.net