美文网首页
003-图层几何学

003-图层几何学

作者: 紫荆秋雪_文 | 来源:发表于2016-12-22 17:08 被阅读6次

    1、布局

    • 1、UIView有三个比较重要的布局属性:frame、bounds、center。CALayer对应叫做frame、bounds、position。为了能清楚区分,图层用来"position",视图用了“center”,但是他们都代表同样的值。
    • 2、frame代表了"图层"的外部坐标(也就是在“父图层上占据的空间”)
    • 3、bounds是内部坐标,{0,0}通常是图层的左上角
    • 4、center和position都代表了相对于父图层anchorPoint所在的位置
    QQ20161221-1@2x.png
    • 5、视图的frame、bounds、center属性仅仅是存取方法,当操纵视图的frame时,实际上是在改变位于视图下方CALayer的frame

    • 6、对于“视图”或者“图层”来说,frame并不是一个非常清晰的属性,它其实是一个虚拟属性,是根据bounds,position和transform计算而来,所以当其中任何一个值发生改变,frame都会变化,相反,改变frame的值同样会影响到他们当中的值

    • 7、当对图层做变换的时候,比如旋转或者缩放,frame实际上代表了“覆盖在图层旋转”之后的整个轴对齐的矩形区域,也就是说frame的宽高可能和bounds的宽高不在一致了

    QQ20161221-2@2x.png

    2、锚点

    • 1、上面提到过,视图的center属性和图层的position属性都指定了anchorPoint相对于父图层的位置。图层的anchorPoint通过position来控制它的frame的位置,你可以认为anchorPoint是用来移动图层的把柄。
    • 2、默认来说,anchorPoint位于图层的中点,所以图层将会以这个点为中心放置。anchorPoint属性并没有被UIView接口暴露出来,这也是视图的position属性被叫做“center”的原因。
    • 3、但是图层的anchorPoint可以被移动,比如你可以把它置于图层frame的左上角,于是图层的内容将会向右下角的position方向移动,而不是居中了
    ![QQ20161221-4@2x.png](https://img.haomeiwen.com/i2338406/3f9994c804662092.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    • 4、所以改变anchorPoint时,虽然“位置”改变了,但是“center”没有改变

    • 5、和第二章提到的contentRect 和 contentsCenter属性类似,anchorPoint用单位坐标来描述,也就是图层的相对坐标,图层左上角是{0,0},右下角是{1,1},因此默认坐标是{0.5,0.5}。anchorPoint可以通过制定x和y值小于0或者大于1,使它放置在图层范围之外

    相关文章

      网友评论

          本文标题:003-图层几何学

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