2012-10-16 161 views
0

我有一个iPad应用程序的UIToolbar,是为了留在所有的方向屏幕的顶部。然而,我的UIToolbar所属的UIView不旋转。 UIToolbar是否旋转,但我无法让旋转以我想要的方式工作...UIToolbar旋转/动画

我不知道如何更改工具栏的大小而不拉伸工具栏的内容(设置一个缩放转换),或者不会搞乱转换(设置框架或边界)。

- (void)updateOrientation:(UIInterfaceOrientation)orientation animated:(BOOL)animated 
{ 
    CGAffineTransform toolbarTransform; 
    switch(orientation) { 
     case UIDeviceOrientationPortrait: 
      toolbarTransform = CGAffineTransformIdentity; 
      break; 

     case UIDeviceOrientationLandscapeRight: 
     toolbarTransform = CGAffineTransformMakeTranslation(-768/2 + 44/2, 768/2 - 44/2 + 1024 - 768); 
     toolbarTransform = CGAffineTransformRotate(toolbarTransform, degreesToRadian(-90)); 

     break; 

     case UIDeviceOrientationLandscapeLeft: 
     toolbarTransform = CGAffineTransformMakeTranslation(768/2 - 44/2, 768/2 - 44/2); 
     toolbarTransform = CGAffineTransformRotate(toolbarTransform, degreesToRadian(90)); 

     break; 

     case UIDeviceOrientationPortraitUpsideDown: 
      toolbarTransform = CGAffineTransformMakeTranslation(0, 1024 - 44); 
      toolbarTransform = CGAffineTransformRotate(toolbarTransform, degreesToRadian(180)); 
      break; 


     default: 
      toolbarTransform = CGAffineTransformIdentity; 
      break; 
    } 

    if(animated) 
    { 
     [UIView animateWithDuration:.5 animations:^ 
     { 
      self.toolbar.transform = toolbarTransform; 
     }]; 
    } 
    else 
    { 
     self.toolbar.transform = toolbarTransform; 
    } 
} 

此代码大多持仓我怎么想的工具栏,但我应该怎么做来调整不会弄乱转换或拉伸工具栏的内容的工具栏?或者我可能完全接近这个错误?

编辑:稍微更新了我的代码。定位是正确的,只需要调整它们...

+0

您应该真正利用UIViewController的自动旋转功能,而不是尝试手动将这些功能一起使用。 – 2012-10-16 16:30:05

+0

但我不想让我的主视图自动旋转。如果我能以某种方式将这个嵌套在一个额外的视图中,这个视图是自动旋转的,并且有人可以告诉我怎么做,那么我会很好!我不是一起黑客,因为我想... :( – MikeS

+0

其实,任何形式的自动旋转都不够,因为其他UI元素并不总是与自动旋转将工具栏放在同一个方向。我基本上必须“破解”在一起,以达到我想要的效果。 – MikeS

回答

1

这个问题的解决方案是创建一个特殊的UIView(称为rotationView)和执行所有的旋转/翻译到该UIView而不是直接到UIToolbar。然后,我可以安全地更改toolbar.frame而不会“搞乱”转换。