1、概要

翻开ios官方开发文档,赫然发现上面对这三个属性的解释如下:

frame:描述当前视图在其父视图中的位置和大小。

bounds:描述当前视图在其自身坐标系统中的位置和大小。

center:描述当前视图的中心点在其父视图中的位置。

是不是有点迷糊?好吧,别急,让我们先说说ios的坐标系统。

2、ios坐标系统

ios以左上角为坐标原点(0,0),以原点向右侧为X轴正方向,原点下侧为Y轴正方向,如下图所示。

ios采用CGPoint来表示点在坐标系上X、Y位置。我们可以通过CGPointMake(x,y)来创建一个坐标点:CGPoint

point = CGPointMake(80,40)

同时,ios采用CGSize来表示视图的宽度和高度,即视图的大小。我们

可以通过CGSizeMake(width,height)来创建一个矩形的大小,如CGSize size =

CGSizeMake(144,72)将创建一个宽度为144,高度为72的矩形大小。

而CGRect则是结合了CGPoint和CGSize,用来表示矩形的位置和大小。它的origin表示矩形右上角所在位置(CGPoint),size表示矩形的大小(CGSize)。

3、frame、bounds和center的区别与联系

回到frame和bounds属性,通过前面的描述不难发现,这两个属性都

是用来描述视图的大小(CGSize)和位置(CGPoint)的,两者都用CGRect表示。不同的是,frame描述的是在其父视图中的

CGRect,而bounds描述的是在其自身视图中的CGRect,也就是说,两者所在的坐标系是不同的。如图3所示,View

B是View A的子视图,那么,View B的frame属性为origin(200,100),size(200,250),而View

B的bounds属性为origin(0,0),size(200,250)。

center属性则用CGPoint表示矩形中心点在其父视图中的位置,如图3中View

B的center属性为(300,200)。

frame、bounds和center三个属性是相互关联、相互影响的,其中一个属性发生变化,其他属性也会跟着变化。

4、frame、bounds和center的使用场景

一般来说,bounds属性比较少用,通常使用frame来设置视图的大小和位置,使用center来改变(移动)视图的位置(也可用frame来改变位置)。另外,对视图进行旋转、缩放也都是相对于center进行操作的。

From:

http://unmi.cc/ios-bounds-frame

frame和bounds是UIView中的两个属性(property)。

frame指的是:该view在父view坐标系统中的位置和大小。(参照点是父亲的坐标系统)

bounds指的是:该view在本身坐标系统中

的位置和大小。(参照点是本身坐标系统)

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

}

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

  1. iOS中的HotFix方案总结详解

    iOS中的HotFix方案总结详解 相信HotFix大家应该都很熟悉了,今天主要对于最近调研的一些方案做一些总结.iOS中的HotFix方案大致可以分为四种: WaxPatch(Alibaba) Dy ...

  2. iOS 开发:『Runtime』详解(二)Method Swizzling

    本文用来介绍 iOS 开发中『Runtime』中的黑魔法Method Swizzling. 通过本文,您将了解到: Method Swizzling(动态方法交换)简介 Method Swizzlin ...

  3. 李洪强iOS经典面试题156 - Runtime详解(面试必备)

    李洪强iOS经典面试题156 - Runtime详解(面试必备)   一.runtime简介 RunTime简称运行时.OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制. 对于C ...

  4. 如何设置双路由器,图文详解

    如何设置双路由器,图文详解 方法一: 要点:更改第二个路由器自己的IP地址,关闭它的DHCP.   一.首先保证只一个路由器时能正常上网.   二.1)设置计算机:每台计算机最好都照如下设置:网络邻居 ...

  5. html标签的下一级遍历,jquery属性,遍历,HTML操作方法详解

    Jquery属性遍历.HTML操作. Jquery拥有可操作HTML元素和属性的强大方法. 下面是我整理的一些jquery遍历函数: .add() 将元素添加到匹配元素的集合中. .andSelf() ...

  6. android启动页使用gif,android中使用react-native设置应用启动页过程详解

    一.背景 在我们使用react-native进行编写代码的时候,当启动应用的时候,我们会看到如下界面 然而,这样的启动界面是非常的不又好,那么我们该怎么进行处理启动界面呢?有如下两种方案 二.方案 1 ...

  7. php导航默认选中,html中关于select标签如何设置默认选中的选项详解

    方法有两种. 第一种通过的属性来设置选中项,此方法可以在动态语言如php在后台根据需要控制输出结果.< select id = "sel" > < option ...

  8. devexpress 中的checkboxlist怎么设置间距_HTML中怎么设置h1的字体样式你知道吗?关于设置h1标签的样式详解

    本篇文章主要为大家讲解了html中的h1标签的样式解析,但是如果不用css样式来做的话,那就只能在html4.01中显示了,所以我们还是尽快学习css层叠样式表吧,好了,现在让我们来说说这篇文章吧. ...

  9. qt怎么设置标签背景图片_HTML中怎么设置h1的字体样式你知道吗?关于设置h1标签的样式详解...

    本篇文章主要为大家讲解了html中的h1标签的样式解析,但是如果不用css样式来做的话,那就只能在html4.01中显示了,所以我们还是尽快学习css层叠样式表吧,好了,现在让我们来说说这篇文章吧. ...

最新文章

  1. 数据仓库的未来 MariaDB ColumnStore
  2. python报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode解决方案
  3. 第02课:深度学习 Python 必备知识点
  4. split函数python 未定义_Python字符串方法split()中的一道坑
  5. 力扣151. 翻转字符串里的单词
  6. HTML5 footer元素
  7. 虚拟机卸载ubuntu安装mysql_ubuntu 卸载与安装mysql
  8. python自动化客户端_python 在 nwjs 应用客户端做 UI 自动化
  9. 电机噪声之谐波分析(内附simulink中FFT分析的相关参数配置与解析)
  10. python长度单位转化_所有长度单位的换算
  11. C#随机生成姓名、电话类
  12. Eclipse开发工具--使用JDT开发java程序
  13. pygame声音和音效
  14. Download EEGLAB
  15. 基于Qt的智能车载系统嵌入式项目(正点原子IMX6ULL开发板)
  16. python自动翻译导学案_变量python学案
  17. Springboot毕设项目基于WEB的延边旅游网 5jjp2java+VUE+Mybatis+Maven+Mysql+sprnig)
  18. 《算法竞赛进阶指南(by 李煜东)》习题题解 集合
  19. 五一出游-徒步旅行主旋律
  20. 笔记本软件页面分辨率低_笔记本分辨率降低怎么办_笔记本电脑电脑分辨率低怎么解决-win7之家...

热门文章

  1. 用矩阵点积的办法构造神经网络的迭代次数1:0.6:0.1=1:1:1
  2. Part1. 泛函分析讲义I-度量空间概述
  3. 用c语言编程飘动的红旗,C语言 飘动的红旗(要有旗杆)
  4. asic面试题目 英伟达_英伟达一面总结
  5. python常用数据结构_Python入门: 数据结构大汇总
  6. 【STM32】FreeRTOS 系统配置
  7. 2.9 迁移学习-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  8. 7.1 概述-机器学习笔记-斯坦福吴恩达教授
  9. STM32 基础系列教程 15 - SPI
  10. 每天学习python 30分钟 -了解python - 看懂#!/usr/bin/python