美文网首页
iOS中图层几何学

iOS中图层几何学

作者: 浪呀么浪打浪 | 来源:发表于2020-07-08 20:28 被阅读0次

    UIView有三个重要的布局属性:frame,bounds和center,CALayer对应的叫frame,bounds和position。为了区分,图层使用了position,视图用了center。但是他们都代表同样的值。

    视图的frame,bounds和center属性仅仅是存取方法,当操作视图的frame,实际上是在改变位于视图下方CALayer的frame,不能够独立于图层之外改变视图的frame。

    对于视图或者图层来说,frame并不是一个非常清晰的属性,它其实是一个虚拟属性,是根据bounds,position和transform计算而来,所以当其中一个值发生变化,frame就会变化。frame变化也会影响其他的值。

    对图层做变换的时候,比如选择或者缩放,frame实际上代表了覆盖在图层旋转之后的整个轴对齐的巨型区域,也就是frame的宽高可能和bounds的宽高不一致了。

    锚点

    anchorPoint位于图层的中点,但是图层的anchorPoint可以被移动。当改变了anchorPoint,position属性保持固定的值并没有发生改变,但是frame却移动了。

    Z坐标轴

    和UIView严格的二维坐标系不同,CALayer存在于一个三维空间当中,zPosition和anchorPointz,二者都是在Z轴上描述图层位置的浮点类型。

    zPosition属性除了做变换之外,zPosition最实用的功能是改变图层的显示顺序。

    Hit Test

    CALayer并不关心任何响应链事件,所以不能直接处理触摸事件或者手势。但是它有一系列的方法帮你处理事件:-containsPoint: 和-hitTest。

    containsPoint:接受一个本图层坐标系下的CGPoint,如果这个点在图层frame范围内就返回yes。

    -hitTest:方法同样接受一个CGPoint类型参数,而不是BOOL类型,它返回图层本身,或者包含这个坐标点的叶子节点图层。

    相关文章

      网友评论

          本文标题:iOS中图层几何学

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