2013年11月3日 星期日

iOS-Orientation

iOS6之後如果要支持旋轉的話還真麻煩,估狗到的資料也都不太齊全,不過皇天不負苦心人,總算給我估到惹XD

在寫App的時候,常常會遇到某些viewController不想讓它的view旋轉,有些viewController允許控制旋轉,在iOS6以前可以使用

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

這個方法來達到目的,可是在iOS6之後,這個方法被deprecated惹!囧!之前寫code的方法是把開發環境往下設定,可是這不是長遠之計,於是花了點時間找到的方法如下:

1. 開一個UINavigationController的subclass
2. 把root的UINavigationController設定為該subclass
3. 然後把以下code寫到subclass內

- (NSUInteger)supportedInterfaceOrientations
{
    return [[self topViewController] supportedInterfaceOrientations];
}

- (BOOL)shouldAutorotate
{
    return YES;
}

4. 在想只支援Portrait的viewController加入以下的code

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

5. 在想支援portrait Orientation and Landscape Orientation的viewController加入以下code

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

上面的方法經過測試目前OK,太佩服找到解決方法的人惹!!!

Reference:

  1. HANPO'S NOTE
  2. Cocoa China

沒有留言:

張貼留言