ios 设置属性的center_ios-坐标系统(详解UIView的frame、bounds跟center属性[图])
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属性[图])相关推荐
- iOS中的HotFix方案总结详解
iOS中的HotFix方案总结详解 相信HotFix大家应该都很熟悉了,今天主要对于最近调研的一些方案做一些总结.iOS中的HotFix方案大致可以分为四种: WaxPatch(Alibaba) Dy ...
- iOS 开发:『Runtime』详解(二)Method Swizzling
本文用来介绍 iOS 开发中『Runtime』中的黑魔法Method Swizzling. 通过本文,您将了解到: Method Swizzling(动态方法交换)简介 Method Swizzlin ...
- 李洪强iOS经典面试题156 - Runtime详解(面试必备)
李洪强iOS经典面试题156 - Runtime详解(面试必备) 一.runtime简介 RunTime简称运行时.OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制. 对于C ...
- 如何设置双路由器,图文详解
如何设置双路由器,图文详解 方法一: 要点:更改第二个路由器自己的IP地址,关闭它的DHCP. 一.首先保证只一个路由器时能正常上网. 二.1)设置计算机:每台计算机最好都照如下设置:网络邻居 ...
- html标签的下一级遍历,jquery属性,遍历,HTML操作方法详解
Jquery属性遍历.HTML操作. Jquery拥有可操作HTML元素和属性的强大方法. 下面是我整理的一些jquery遍历函数: .add() 将元素添加到匹配元素的集合中. .andSelf() ...
- android启动页使用gif,android中使用react-native设置应用启动页过程详解
一.背景 在我们使用react-native进行编写代码的时候,当启动应用的时候,我们会看到如下界面 然而,这样的启动界面是非常的不又好,那么我们该怎么进行处理启动界面呢?有如下两种方案 二.方案 1 ...
- php导航默认选中,html中关于select标签如何设置默认选中的选项详解
方法有两种. 第一种通过的属性来设置选中项,此方法可以在动态语言如php在后台根据需要控制输出结果.< select id = "sel" > < option ...
- devexpress 中的checkboxlist怎么设置间距_HTML中怎么设置h1的字体样式你知道吗?关于设置h1标签的样式详解
本篇文章主要为大家讲解了html中的h1标签的样式解析,但是如果不用css样式来做的话,那就只能在html4.01中显示了,所以我们还是尽快学习css层叠样式表吧,好了,现在让我们来说说这篇文章吧. ...
- qt怎么设置标签背景图片_HTML中怎么设置h1的字体样式你知道吗?关于设置h1标签的样式详解...
本篇文章主要为大家讲解了html中的h1标签的样式解析,但是如果不用css样式来做的话,那就只能在html4.01中显示了,所以我们还是尽快学习css层叠样式表吧,好了,现在让我们来说说这篇文章吧. ...
最新文章
- 数据仓库的未来 MariaDB ColumnStore
- python报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode解决方案
- 第02课:深度学习 Python 必备知识点
- split函数python 未定义_Python字符串方法split()中的一道坑
- 力扣151. 翻转字符串里的单词
- HTML5 footer元素
- 虚拟机卸载ubuntu安装mysql_ubuntu 卸载与安装mysql
- python自动化客户端_python 在 nwjs 应用客户端做 UI 自动化
- 电机噪声之谐波分析(内附simulink中FFT分析的相关参数配置与解析)
- python长度单位转化_所有长度单位的换算
- C#随机生成姓名、电话类
- Eclipse开发工具--使用JDT开发java程序
- pygame声音和音效
- Download EEGLAB
- 基于Qt的智能车载系统嵌入式项目(正点原子IMX6ULL开发板)
- python自动翻译导学案_变量python学案
- Springboot毕设项目基于WEB的延边旅游网 5jjp2java+VUE+Mybatis+Maven+Mysql+sprnig)
- 《算法竞赛进阶指南(by 李煜东)》习题题解 集合
- 五一出游-徒步旅行主旋律
- 笔记本软件页面分辨率低_笔记本分辨率降低怎么办_笔记本电脑电脑分辨率低怎么解决-win7之家...
热门文章
- 用矩阵点积的办法构造神经网络的迭代次数1:0.6:0.1=1:1:1
- Part1. 泛函分析讲义I-度量空间概述
- 用c语言编程飘动的红旗,C语言 飘动的红旗(要有旗杆)
- asic面试题目 英伟达_英伟达一面总结
- python常用数据结构_Python入门: 数据结构大汇总
- 【STM32】FreeRTOS 系统配置
- 2.9 迁移学习-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
- 7.1 概述-机器学习笔记-斯坦福吴恩达教授
- STM32 基础系列教程 15 - SPI
- 每天学习python 30分钟 -了解python - 看懂#!/usr/bin/python