1

自動レイアウトを有効にして、Xcode4.5でアプリを作成しました。iOS 5と互換性がないため(テスト前はわかりませんでした)、ストーリーボードから自動レイアウトのチェックを外しました。これで、シミュレーターでテストするときに、ビューのコンテンツがすべて時計回りに回転します。

アプリは元々横向きです(Xcodeでは問題なく表示されます)。シミュレーターは横向きで起動しますが、自動レイアウトのチェックを外した後、ビュー内のすべてが回転したように見えます。

例:ここに画像の説明を入力してください

新しいViewControllerを試してみましたが、それでも上記のように表示されます。初期の向きは横向きに設定されています。解決策はありますか?

4

2 に答える 2

2

向きの問題を修正するには、これを行ってください。

これらのマクロを.pchファイルで定義します

#define IOS_OLDER_THAN_6        ( [ [ [ UIDevice currentDevice ] systemVersion ] floatValue ] <  6.0 )
#define IOS_NEWER_OR_EQUAL_TO_6 ( [ [ [ UIDevice currentDevice ] systemVersion ] floatValue ] >= 6.0 )

このメソッドをviewContrller.m内に記述します

#ifdef IOS_OLDER_THAN_6
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    return (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) || 
    (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
#endif

#ifdef IOS_NEWER_OR_EQUAL_TO_6
-(BOOL)shouldAutorotate
{
    return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
    return (UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight);
}
#endif
于 2013-02-25T04:38:01.640 に答える
0

そして、aが関係している場合、もう1つ、とUINavigationControllerをサブクラス化します。 UINavigationControlleroverriding supportedInterfaceOrientations

 #import "UINavigationController+Orientation.h"

 @implementation UINavigationController (Orientation)

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

-(BOOL)shouldAutorotate
 {
    return YES;
 }

@end  

現在、iOSコンテナ(UINavigationControllerなど)は、自動回転する必要があるかどうかを判断するために子に相談しません。
サブクラス化する方法
1.新しいファイルを追加します(cocoatouchの下のObjectivec-カテゴリ)
2.:Orientation:UINavigationController3 .上記のコードをに追加しますCategoryCategory On
UINavigationController+Orientation.m

于 2013-02-25T04:47:03.867 に答える