非常感谢您对此的帮助。我对视图应用了3D转换,并需要确定呈现视图的边缘坐标,以便可以在其旁边呈现另一个视图(没有任何像素间隔)。具体而言,我想要一系列视图(“页面”)像小册子一样折叠起来,通过动画效果改变角度。
int dir = (isOddNumberedPage ? 1 : -1);
float angle = 10.0;
theView.frame = CGRectMake(pageNumber * 320, 0, 320, 460);
CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = -1.0 / 2000; // Perspective
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform,
dir * angle / (180.0 / M_PI), 0.0f, 1.0f, 0.0f);
theView.layer.transform = rotationAndPerspectiveTransform;
// Now need to get the top, left, width, height of the transformed view to correct the view's left offset
我尝试了多种方法,包括检查CALayer和使用一些找到的矩阵数学代码片段,但是我没有能够解决它,甚至无法接近(根据角度,相差20像素)。是否有一种方法可以在不花费两周时间阅读矩阵数学教科书的情况下完成这项任务?