0

UITabbarcontroller に UINavigationController があります。UINavigationController 内でビューコントローラーを 1 つだけ回転させたい。

これが私が使用しているコードスニペットです。

-(NSUInteger)supportedInterfaceOrientations
{
if (CURRENTDEVICE == IPHONE)
    return [self.navigationController supportedInterfaceOrientations] | UIInterfaceOrientationMaskAllButUpsideDown;
else
    return UIInterfaceOrientationMaskAll;
}

-(BOOL)shouldAutorotate {
return YES;
}

UINavigationController にもカテゴリがあります。

#import "UINavigationController+autorotate.h"

@implementation UINavigationController (autorotate)

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

@end

実装方法がわかりません。

4

2 に答える 2

0

supportedInterfaceOrientations実装のカテゴリで、 topViewController. メソッドを使用kindOfClass:して、それがどのクラスであるかを調べることができます...次に、ナビゲーションのデフォルトとは異なる方向を返します。

をサブクラス化UINavigationControllerして、同じ方法でこのチェックを行うこともできます。ナビゲーション コントローラーのサブクラス化は、iOS 6 まではお勧めしませんが、ドキュメントにはまだこれが記載されていますが、Apple のエンジニアは、新しい回転ロジックを使用してUINavigationController.

于 2012-10-13T13:12:47.500 に答える
0

cgrect でハードコーディングできます。ここにあなたを助けるかもしれない別の質問へのリンクがあります。回転用に 2 つの異なるビューをハードコーディングする良い例がありますが、個人的にはお勧めしません。とにかく、それがあなたを正しい方向に向けるかもしれないと思いました。

https://stackoverflow.com/questions/12867792/ios-rotation-causing-views-to-displace-shift-forcing-me-to-use-non-sensical-har

その質問には、あなたを始めるための一連のコードがあります。スターボード (ストーリーボードを使用している場合) にもオプションがあり、IB で回転を設定する方がはるかに簡単です。

お役に立てれば

エイドリアン

于 2012-10-13T12:57:50.533 に答える