2012-10-16 205 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而不會「搞亂」轉換。