UIViewに(2つの消失点を持つ)遠近法を追加する方法でUIViewを変換したいと思います(以下を参照)。
ビューでこれを実行する理由は、変換されたビューのコンテンツをUITableViewのセルにしたいためです。
この種のコーディングは初めてですが、サブビューに属するCALayerを変更する必要があると思います。ただし、興味のある変換はCATransform3Dを使用して作成することはできないと思います。
誰かがこの問題に取り組む方法を知っていますか?
UIViewに(2つの消失点を持つ)遠近法を追加する方法でUIViewを変換したいと思います(以下を参照)。
ビューでこれを実行する理由は、変換されたビューのコンテンツをUITableViewのセルにしたいためです。
この種のコーディングは初めてですが、サブビューに属するCALayerを変更する必要があると思います。ただし、興味のある変換はCATransform3Dを使用して作成することはできないと思います。
誰かがこの問題に取り組む方法を知っていますか?
問題を回避/解決する方法を見つけたようです。
CATransform3D変換を使用すると、ビューを2つの部分(2つの独立したUITableView)に分割することで、見晴らしの良いポイントを概算できます。これらは、必要なプロトコルを実装するUIViewController(xコードによって提供されるUITableViewControllerではない)によって管理する必要があります。
次に、viewDidLayoutSubviews:メソッドで、次のコードを使用して2つのテーブルビューを変換します。
- (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;
}
変換すると、2つのテーブルビューをシフトして、きちんと合わせることができます。残っている唯一の仕事は、一方のテレビのスクロールをもう一方のテレビに接続することです。私はまだそれを理解していません。