1

このテーマについて多くの質問がありますが、私が経験している問題の解決策を見つけることができません。横向きのみのiPadアプリを作成しました。iOS6より前のOSで実行すると正常に動作しますが、iOS6ではアプリが縦向きで開きます。このスクリーンショットは、私が何を意味するかを示しています(申し訳ありませんが素晴らしい説明ではありません)http://s1342.beta.photobucket.com/user/designedbyria/media/ScreenShot2012-11-02at122113.png.html

問題は以下のコードのどこかにあると思いますが、確信が持てません。サポートされているインターフェイスの向きをLandscapeLeftとLandscapeRightのみに設定しましたが、これは機能しません。運が悪かったので、ここの質問も見てみました。

xcodeとcordova/phonegapを使用しています

iOS6.0でのインターフェースの向き

xcode 4.5 GMIOS6で向きを横向きに設定します

iOS6アプリ-iPhone5の画面サイズに対処する方法は?

前もって感謝します!

/ ** *これは、アプリの初期化後のメインキックオフであり、ビューと設定はここで設定されます。(推奨-iOS4以降) /-(BOOL)application:(UIApplication)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSURL * url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey]; NSString * invokeString = nil;

if (url && [url isKindOfClass:[NSURL class]]) {
    invokeString = [url absoluteString];      NSLog(@"iwill launchOptions = %@", url);
}    

CGRect screenBounds = [[UIScreen mainScreen] bounds];
self.window = [[[UIWindow alloc] initWithFrame:screenBounds] autorelease];
self.window.autoresizesSubviews = YES;

CGRect viewBounds = [[UIScreen mainScreen] applicationFrame];

self.viewController = [[[MainViewController alloc] init] autorelease];
self.viewController.useSplashScreen = YES;
self.viewController.wwwFolderName = @"www";
self.viewController.startPage = @"index.html";
self.viewController.invokeString = invokeString;
self.viewController.view.frame = viewBounds;

// check whether the current orientation is supported: if it is, keep it, rather than forcing a rotation
BOOL forceStartupRotation = YES;
UIDeviceOrientation curDevOrientation = [[UIDevice currentDevice] orientation];


if (UIDeviceOrientationUnknown == UIInterfaceOrientationLandscapeLeft) {
    // UIDevice isn't firing orientation notifications yet… go look at the status bar
    curDevOrientation = (UIDeviceOrientation)[[UIApplication sharedApplication] statusBarOrientation];
}

if (UIDeviceOrientationIsValidInterfaceOrientation(curDevOrientation)) {
    for (NSNumber *orient in self.viewController.supportedOrientations) {
        if ([orient intValue] == curDevOrientation) {
            forceStartupRotation = YES;
            break;
        }
    }
} 

if (forceStartupRotation) {
    NSLog(@"supportedOrientations: %@", self.viewController.supportedOrientations);
    // The first item in the supportedOrientations array is the start orientation (guaranteed to be at least Portrait)
    UIInterfaceOrientation newOrient = [[self.viewController.supportedOrientations objectAtIndex:0]

intValue]; NSLog(@ "AppDelegate強制ステータスバー:%d from:%d"、newOrient、curDevOrientation); [[UIApplication sharedApplication] setStatusBarOrientation:newOrient];

}


[self.window addSubview:self.viewController.view];
[self.window makeKeyAndVisible];

return YES; }
4

2 に答える 2

3

私は同じ問題を抱えていました(ただし、コルドバ/フォンギャップは使用していません)。

サブビューとして追加するだけでなく、appDelegate で View Controller を RootViewController として設定する必要があります。

appdelegate で置き換えます。

[self.window addSubview:self.viewController.view];
[self.window makeKeyAndVisible];

[self.window setRootViewController:self.viewController];
[self.window makeKeyAndVisible];
于 2012-12-08T09:17:37.130 に答える
0

デリゲートを使用できます

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation

{
  return UIInterfaceOrientationLandscapeLeft;

}

このデリゲートを使用すると、アプリケーションは横向きモードまたは任意の向きモードで表示されます。

それを試してみてください。

于 2013-03-01T05:56:20.060 に答える