美文网首页
CALyer 3D变换

CALyer 3D变换

作者: Maple_chang | 来源:发表于2016-03-03 13:33 被阅读43次

    文章摘自https://zsisme.gitbooks.io/ios-/content/chapter5/3d-transform.html

    5.7.jpeg

    CATransform3DMakeRotation对视图内的图层绕Y轴做了45度角的旋转

      CATransform3D transform = CATransform3DMakeRotation(M_PI_4, 0, 1, 0);
        self.layerView.layer.transform = transform;
    
    5.8.jpeg

    CATransform3D的m34元素,用来做透视
    m34的默认值是0,我们可以通过设置m34为-1.0 / d来应用透视效果,d代表了想象中视角相机和屏幕之间的距离,以像素为单位,那应该如何计算这个距离呢?实际上并不需要,大概估算一个就好了。
    因为视角相机实际上并不存在,所以可以根据屏幕上的显示效果自由决定它的防止的位置。通常500-1000就已经很好了,但对于特定的图层有时候更小后者更大的值会看起来更舒服,减少距离的值会增强透视效果,所以一个非常微小的值会让它看起来更加失真,然而一个非常大的值会让它基本失去透视效果.

     CATransform3D transform = CATransform3DIdentity;
        //apply perspective
        transform.m34 = - 1.0 / 500.0;
        //rotate by 45 degrees along the Y axis
        transform = CATransform3DRotate(transform, M_PI_4, 0, 1, 0);
        //apply to layer
        self.layerView.layer.transform = transform;
    
    5.10.jpeg

    如果视图内有多个子视图都需要变换,可以指定父视图具有透视效果:

      CATransform3D perspective = CATransform3DIdentity;
        perspective.m34 = - 1.0 / 500.0;
        self.containerView.layer.sublayerTransform = perspective;
    

    相关文章

      网友评论

          本文标题:CALyer 3D变换

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