我正在尝试在我的屏幕中拥有一个子视图(由一个视图控制器拥有)不在设备旋转时旋转。我的视图控制器允许旋转,我正在尝试将90度旋转应用于一个“静止”视图以抵消整体旋转。
问题是,一切似乎都在旋转,变换似乎没有做任何事情。我试图对视图进行仿射变换,并在图层上进行三维变换(下图)。该方法被调用,但我从未看到视觉差异。
有什么想法?感谢。
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
{
CALayer *layer = stuckview.layer;
layer.transform = CATransform3DMakeRotation(90, 0, 0, 1);
}
答案 0 :(得分:26)
为了帮助其他人找到这个,我添加了几个可搜索的短语,例如:
阻止UIView旋转
阻止UITableView背景旋转
停止UIView旋转
停止UITableView背景旋转
任何方向的完整样本:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
switch (toInterfaceOrientation) {
case UIInterfaceOrientationLandscapeLeft:
stuckview.transform = CGAffineTransformMakeRotation(M_PI_2); // 90 degress
break;
case UIInterfaceOrientationLandscapeRight:
stuckview.transform = CGAffineTransformMakeRotation(M_PI + M_PI_2); // 270 degrees
break;
case UIInterfaceOrientationPortraitUpsideDown:
stuckview.transform = CGAffineTransformMakeRotation(M_PI); // 180 degrees
break;
default:
stuckview.transform = CGAffineTransformMakeRotation(0.0);
break;
}
}
答案 1 :(得分:4)
你的代码真的被执行了吗? (你实现了shouldAutorotateToInterfaceOrientation:?)
stuckview.transform = CGAffineTransformMakeRotation(M_PI_2);
应该做的。
注意:这些函数的弧度不是度数。