1

私の問題は次のとおりです。PortraitとlandscapeLeft/Rightの両方を許可する1つのViewControllerを除いて、すべてのViewControllerでPortraitの向きのみを許可したいです。さまざまなスライド/ViewControllerのIOSで向きを設定する方法にほぼ2日を費やしました。いくつかの検索の後、スタックでこのスレッドを見つけました: UITabBarController Rotation Issues in ios 6

すべての読者の時間を節約するために、ここに投稿するそのスレッドでクナニの例に従いました。

ザック、私はこの同じ問題に遭遇しました。これは、viewController が TabBar Controller または UINavigationController の内部に埋め込まれており、これらのメソッドの呼び出しが通常のビューではなく内部で行われているためです (iOS6 で変更)。さまざまなビュー (サインアップ プロセス、ログインなど) へのナビゲーションを持つすべてのモーダル ビューで UINavigationController 内に埋め込まれた viewController を提示していたため、この問題に遭遇しました。私の簡単な修正は、これら 2 つのメソッドを含む UINavigationController の CATEGORY を作成することでした。モーダルビューを回転させたくないので、とにかく no を返す shouldAutorotate があります。あなたの修正はこのように簡単かもしれません。試してみてください。それが役に立てば幸い。カテゴリを作成して autoRotate という名前を付け、UINavigationController オプションを選択しました。M+H ファイルは以下のとおりです。

#import "UINavigationController+autoRotate.h"

@implementation UINavigationController (autoRotate)

-(BOOL)shouldAutorotate {
return NO;
}

- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}

@end

... とカテゴリ .h:

 #import <UIKit/UIKit.h>

 @interface UINavigationController (autoRotate)

-(BOOL)shouldAutorotate;
- (NSUInteger)supportedInterfaceOrientations;

@end

私は彼が言ったことを行い、機能する UITabBarController のカテゴリを設定しようとしました。tabBar に接続されているすべてのクラスは、orientationPortrait のみを許可するようになりました。しかし、次の写真を見ると

ここに画像の説明を入力

(私のプロジェクトのスクリーンショット) StoryBoard の真ん中に ShowTaskView というクラスがあります。このクラスは、UINavigationController を介してほとんどのクラス (UITabBarController に直接接続されている) に接続されています。UITabBarController を Portrait のみを許可するように設定しても、ShowTaskView はそのルールの影響を受けるようで、回転させることができません。私のプロジェクトのスキームは、次のように説明することもできます。

TabBarController ----> UINavigationController -------> class X ----------> class ShowTaskView

クラスを tabBarController に接続して、orientationPortrait のみを許可し、残りのクラスでは、プロジェクトの構築方法に基づいて縦向きと横向きの両方を許可する場合、ここから何ができますか? 解決するのがとても難しいので、私はこの問題に非常に不満を感じています:/

よろしく

4

1 に答える 1

0

同様のスレッドで私の回答を参照してください:ナビゲーション コントローラー スタックはランドスケープ モードですが、モーダルに表示されたビュー コントローラー ビューは常にポートレート フレーム サイズです

iOS6 はナビゲーション スタックによって回転を制御するため、回転可能なビューを別のナビゲーション コントローラーにラップして、そこで制御できるようにします。

于 2012-11-02T12:35:22.873 に答える