代码之家  ›  专栏  ›  技术社区  ›  Ben Zotto sberry

将旋转转换设置为uiview或其层似乎不起作用?

  •  9
  • Ben Zotto sberry  · 技术社区  · 14 年前

    我试图在我的屏幕上有一个子视图(由一个视图控制器拥有) 设备旋转时旋转。我的视图控制器允许旋转,因为它应该,我正在尝试应用一个90度的旋转到一个“静止”的视图,以抵消整体旋转。

    问题是,一切似乎都在以任何方式旋转,而转换似乎没有做任何事情。我尝试在视图上进行仿射变换,在图层上进行三维变换(如下)。方法正在被调用,但我从未看到任何视觉差异。

    有什么想法吗?谢谢。

    - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
    {
        CALayer *layer = stuckview.layer;
        layer.transform = CATransform3DMakeRotation(90, 0, 0, 1);
    }    
    
    2 回复  |  直到 13 年前
        1
  •  26
  •   nekno    13 年前

    为了帮助其他人找到这个,我添加了几个可搜索的短语,比如:

    防止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;
            }
        }
    
        2
  •  4
  •   Eiko    14 年前

    你的代码真的执行了吗?(是否执行shouldAutoToInterfaceOrientation:?)

    stuckview.transform = CGAffineTransformMakeRotation(M_PI_2); 
    

    应该做这个工作。

    注意:函数采用的是弧度而不是度数。