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

  • 相关阅读:
    醒醒吧少年,只用Cucumber不能帮助你BDD
    【Python3 爬虫】06_robots.txt查看网站爬取限制情况
    【Python3 爬虫】05_安装Scrapy
    【基尼系数】基尼系数的计算方法与计算案例
    【Python3 爬虫】04_urllib.request.urlretrieve
    【Python3 爬虫】03_urllib.error异常处理
    【Python3 爬虫】02_利用urllib.urlopen向百度翻译发送数据并返回结果
    【Python】help与dir的用法
    在线激活Pycharm(亲测有效)
    【Python3 爬虫】01_简单页面抓取
  • 原文地址:https://www.cnblogs.com/LifeTechnologySupporter/p/5292881.html
Copyright © 2020-2023  润新知