2013-02-28 24 views
1

我想轉換一個UIView的方式,增加一個角度(有兩個消失點)(見下文)。添加扭曲與消失點投影到CAlayer

UIView with applied transform

我爲什麼要以這樣做的原因是因爲我想改變視圖的內容是一個UITableView的細胞。

我是新來的這種編碼,但我認爲我將不得不改變屬於子視圖的CALayer。但是,我相信,我感興趣的轉換不能使用CATransform3D創建。

有沒有人有一個想法如何解決這個問題?

回答

1

看來我已經找到一種方法來規避/解決問題:

使用CATransform3D轉換,可以近似通過拆分視圖分爲兩個部分(兩個獨立UITableViews)華帝點。這些應該由實現必要和協議的UIViewController(而不是由x代碼提供的UITableViewController)管理。

然後在viewDidLayoutSubviews:方法中使用下面的代碼來轉換兩個tableviews。

- (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可以移動,以便它們整齊地合在一起。剩下的唯一工作就是連接一臺電視和另一臺電視的滾動。我還沒有想到這一點。