私はあなたがここで見ることができるような折り畳み式の Facebook メニューを作ろうとしています: http://www.mobileinc.co.uk/2012/05/folding-iphone-sidebar-menu/
今のところ、「折り」の部分に取り組んでいます。2 つのレイヤーがあります: - 左のレイヤーには {1,.5} にアンカー ポイントがあります - 右のレイヤーには {0,.5} にアンカー ポイントがあります
メインビューの真ん中で問題なく折りたたむことができます: CGFloat width = self.view.frame.size.width; CGFloat destinationWidth = slider.value * width;
CGFloat hypothenuse = self.view.frame.size.width/2.0f;
CGFloat adjacent = destinationWidth / 2.0f;
CGFloat opposite = sqrtf(powf(hypothenuse, 2)-powf(adjacent, 2));
CGFloat marginLeft = (width - destinationWidth) / 2;
CGFloat angle = asinf(opposite/hypothenuse);
CATransform3D transform = CATransform3DIdentity;
transform.m34 = 1.0f / -4000.0f;
rightSide.layer.transform = CATransform3DRotate(CATransform3DTranslate(transform,0,0,-opposite),-angle, 0, 1, 0);
leftSide.layer.transform = CATransform3DRotate(CATransform3DTranslate(transform,0,0,-opposite),angle, 0, 1, 0);
これは完全に機能します。次のように x 軸でレイヤーを変換しようとすると問題が発生します: CATransform3DTranslate(transform,-marginLeft,0,-opposite)
レイヤーは適切な z 移動で折り畳まれますが、ビュー全体が回転したかのようにぎこちない角度で終了します。
これは明らかにパースペクティブに関連しています(m34を設定しないと「機能します」)が、それを補正する方法がわかりません...
前もって感謝します!
乾杯、
TeuBeu2