1

我想以添加透视图(有两个消失点)的方式转换 UIView(见下文)。

具有应用变换的 UIView

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

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

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

4

1 回答 1

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 可以移动,以便它们整齐地组合在一起。剩下的唯一工作是将一台电视的滚动与另一台电视连接起来。我还没有想出那个。

于 2013-03-04T22:13:52.453 回答