【问题标题】:adding distort with vanishing point projection to CAlayer使用消失点投影向 CAlayer 添加扭曲
【发布时间】:2013-02-28 23:33:29
【问题描述】:

我想对 UIView 进行转换,使其添加一个透视图(带有两个消失点)(见下文)。

我想对视图执行此操作的原因是因为我希望转换后的视图的内容成为 UITableView 的单元格。

我是这种编码的新手,但我认为我必须更改属于子视图的 CALayer。但是,我相信,我感兴趣的转换无法使用 CATransform3D 创建。

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: ios calayer perspective catransform3d vanishing-point


    【解决方案1】:

    看来我找到了规避/解决问题的方法:

    使用 CATransform3D 转换,可以通过将视图分成两部分(两个独立的 UITableView)来逼近有利位置。这些应该由实现必要和协议的 UIViewController(不是 x 代码提供的 UITableViewController)管理。

    然后在 viewDidLayoutSubviews: 方法中使用下面的代码对两个 tableview 进行转换。

    - (void) viewDidLayoutSubviews {
    
         CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
        // left View
        // vantage point
        rotationAndPerspectiveTransform.m34 = 1.0 / -150.0;
        // Z-rotation of 90°
        rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 90.0 * M_PI/180.0, 0, 0,1);
        // X-rotation of 25°
        rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, -25.0 * M_PI/180.0, 1, 0,0);
        // left view
        [self.view viewWithTag:1].layer.transform = rotationAndPerspectiveTransform;
    
    
        //right view
        rotationAndPerspectiveTransform = CATransform3DIdentity;
        rotationAndPerspectiveTransform.m34 = 1.0 / -150;
        // Z-rotation of 90°
        rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 90.0 * M_PI / 180.0, 0, 0,1);
        // X-rotation of 30°
        rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 25.0 * M_PI / 180.0, 1, 0,0);
        // right view
        [self.view viewWithTag:2].layer.transform = rotationAndPerspectiveTransform;
    }
    

    转换后,两个 tableview 可以移动,以便它们整齐地组合在一起。剩下的唯一工作是将一台电视的滚动与另一台电视连接起来。这个我还没想好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-20
      • 2013-06-01
      • 1970-01-01
      相关资源
      最近更新 更多