我正在尝试制作一个折叠式 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