美文网首页
深入坐标系、

深入坐标系、

作者: 玉米地里种玉米 | 来源:发表于2016-08-26 17:08 被阅读14次

    视图与坐标有关的四个属性:

    frame  bounds  center  transform

    frame用于记录在 设备空间  层面上的实际位置和大小

    bounds和center 用于记录视图在用户空间中的位置和大小

    需要将用户空间(看不见的空间)展现到 设备空间(看的见的设备屏幕),中间的映射规则就有transform来决定,如果没有变形,两个空间保持一致,但是有了变形,那么 就会把用户空间中的结果  改变大小或角度或位置 之后再映射到 设备空间

    1.深入坐标系

     frame

    a、什么是frame

    类型:CGRect结构体类型

    作用:该视图左顶点在父坐标系中的位置,以及在父视图中占据的宽和高

    b、直接修改了frame属性时,其他属性如何变化

    bounds:YES

    center:  YES

    transform:NO

    c、什么时候用frame

    当把一个视图添加到父视图中,需要定位时,一定要设置frame属性

    2 bounds

    a、什么是bounds

    类型:CGRect类型的结构体

    作用:描述了该视图自己的坐标系顶点的起始值,以及该视图自身的大小

    b、直接修改了bounds属性,其他属性如何变化?

    frame:YES

    center:NO

    transform:NO

    c、什么时候使用bounds属性?

    当需要定位一个视图,读取父视图的大小才能定这个位置时,就需要读取父视图的bounds属性来获取大小

    当需要修改子视图的位置时,可以通过修改视图的bounds中的坐标系起点值,从而使子视图的位置发生偏移,实现移动的效果

    3 center

    a、什么是center属性?

    类型:CGPoint结构体类型

    作用:描述的是该视图的中心点,在父视图坐标系中的位置

    b、直接修改了center属性,其他属性会如何变化?

    frame:YES

    bounds:NO

    transform:NO

    c、什么时候用center?

    需要修改视图的位置时,也就是想实现位移,通过修改center实现

    4 transform

    a、什么是transform属性?

    类型:CGAffineTransform结构体

    作用:描述该视图的变形 状态

    b、直接修改了transform属性,其他属性如何变化

    frame:YES

    bounds:NO

    center:NO

    c、什么时候用transform

    需要变形时(位移、缩放、旋转),通过修改transform属性

    总结:与坐标有关的数据,一共分了两个层面,一个叫做用户空间,一个叫做设备空间,center和bounds用于记录用户空间中视图的大小和位置,但是用户空间中的视图映射到设备空间时,不一定按照记录的center和bounds来表现,中间的映射规则就记录在transform中,所以,没有变形以前,用户空间的数据什么样,表现到设备空间就是什么样,所以frame和bounds的改变是协调一致的,此时,可以认为时表里如一,如果有了变形,就意味着设定了一套映射规则,与,用户空间的数据经过变化后,到了设备空间就会表现出不同的大小,此时可以认为是表里不一。transfom记录的就是两个空间之间的映射规则

    结论:

    定位选frame

    大小选bounds

    位移选center

    变形选transform

    相关文章

      网友评论

          本文标题:深入坐标系、

          本文链接:https://www.haomeiwen.com/subject/exszsttx.html