我使用Core Animation将视图围绕y轴旋转了50度。 我希望视图边缘触及屏幕边缘。我该怎么做?
我知道视图的长度和视图旋转的度数(50度),所以我想我可以使用三角函数确定视图和边缘之间的距离。但是,相机的视角受m34
结构的CATransform3D
属性影响。如何确定移动视图以与屏幕边缘对齐所需的距离?
CATransform3D rotation = CATransform3DIdentity;
rotation.m34 = -1.0/500.0;
rotation = CATransform3DRotate(rotation, 50.0 * M_PI / 180, 0.0, 1.0, 0.0);
view.layer.transform = rotation;
view.layer.zPosition = 200;
答案 0 :(得分:1)
如果我理解正确,您需要以下内容:
为了简化您的计算,您需要使用anchorPoint
的{{1}}。 CALayer
是应用变换的地方,其效果在旋转中特别可见。我们要做的是告诉anchorPoint
围绕其中一个点旋转,而不是中心(这是默认值)。
这是我的CALayer
:
loadView
我获得的是你上面看到的图像。
希望它有所帮助!
答案 1 :(得分:0)
您希望将最终转换矩阵(包括M34更改)应用于视图边缘的终点,这些终点是您尝试计算的距离。这将为您提供投影空间中您的点的最终位置。
iOS 5添加了GLKit,其中包括用于进行矩阵和向量计算的整个函数库。例如,看看GLKMatrix4MultiplyVector3。该函数采用3部分向量并将其乘以4x4矩阵,并返回得到的3分量向量。
您可能需要GLKMatrix4MultiplyVector4,因为如果我没记错的话,您希望您的矢量拥有比轴数多1个分量(因此对于3D矢量,您需要4分量矢量。)矢量数学不是我的强项,所以当我需要使用它时,我必须查看这些内容。