2013-02-23 57 views
2

我正在製作一個應用程序,它既適用於縱向模式,也適用於橫向模式。對於iOS 5.0我通過以下方式即iOS 6.0旋轉中的問題

-(BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation 

{ 
    if(((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || 
    (interfaceOrientation == UIInterfaceOrientationLandscapeRight))) 
{ 
    productname.frame=CGRectMake(240, 97, 106, 20); 
      self.view = landscapeView; 

} 

else if 

(((interfaceOrientation == UIInterfaceOrientationPortrait) || 
      (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown))){ 
    productname.frame=CGRectMake(153, 151, 106, 20); 

    self.view = portraitView; 

} 

    return YES; 

}

iOS 6.0我得到了以下用於定向兩種方法,

  • (NSUInteger)supportedInterfaceOrientations
  • (BOOL)shouldAutorotate添加視圖

我實際上需要一種在設備旋轉過程中必須點燃的方法。如果有人有一個想法,請讓我知道。我已經浪費了很多時間。

非常感謝。

+0

我不相信有一個在旋轉過程中稱爲*的方法*只有前後。 – trojanfoe 2013-02-23 13:04:02

+0

那麼我應該怎麼做旋轉。旋轉過程中觀點會如何變化? – 2013-02-23 13:06:18

+0

你需要做的是在你的根視圖控制器(它*會得到通知)中放置一個方法,在頂部視圖控制器中調用「自己旋轉」方法。真的很難看,但顯然蘋果希望強制人們使用自動佈局。 – 2013-02-23 13:41:02

回答

1

我使用UINavigationController的子類與下面的代碼:

- (BOOL)shouldAutorotate { 
    return YES; 
} 

- (NSUInteger)supportedInterfaceOrientations { 
    if (self.topViewController.presentedViewController) { 
     return self.topViewController.presentedViewController.supportedInterfaceOrientations; 
    } 
    return self.topViewController.supportedInterfaceOrientations; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    return self.topViewController.preferredInterfaceOrientationForPresentation; 
} 

,它的工作非常適合我

和AppDelegate.m文件:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { 
    return [UIDevice isIpad] ? UIInterfaceOrientationMaskAll : UIInterfaceOrientationMaskAllButUpsideDown; 
} 
0

使用

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration