iOS7 で動作するようにアプリを更新していますが、方向とビューの配置に多くの問題がありました。
次のリストを表示するビューを使用しています
カテゴリ->場所->場所情報。
[場所] ビューと [場所情報] ビューには、前の画面に戻るための戻るボタンがあります。ただし、戻るボタンが押されるたびに、ビューは画面外の中央に配置されます。これは、Reveal アプリケーション (revealapp.com) を使用して、iPhone で実行したときにビューがどこに配置されているかを確認したためです。
ビューが画面上に正しく配置されると、コンテナー ビューの中心が (X: 160、Y:240) に設定されます。
しかし、戻るボタンを押すと、ビューは反対側の隅に配置され、コンテナー ビューの座標は (X: 160、Y: 720) に設定されます。
何がこれを引き起こしているのでしょうか?
私たちの UI は特にランドスケープ モードで動作する必要があり、iOS7 のアップグレードでその向きを維持するためのあらゆる種類の問題がありました。
任意の支援や手がかりをいただければ幸いです。
向きを制御していると思われるスクリプトを含めています。
/*
* Portable.cpp
* Unity-iPhone
*
* Created by macmini on 8/25/10.
* Copyright 2010 __MyCompanyName__. All rights reserved.
*
*/
#include "UnityAppController.h"
#include "Portable.h"
#include "RootViewController.h"
#include "DBConnection.h"
#import "DeviceID.h"
#ifdef USE_FRONT_END_CTRLR
#import "FBFrontendController.h"
#endif
extern UIWindow *uiWindow;
void UnityPause(bool pause);
RootViewController *controller;
bool unityPaused = false;
bool inDesiredOrientation = false;
@implementation UINavigationController (Rotation_IOS6)
-(BOOL)shouldAutorotate
{
UIInterfaceOrientation o = self.interfaceOrientation;
UIInterfaceOrientation ob = [UIDevice currentDevice].orientation;
if (ob == UIDeviceOrientationLandscapeRight && o == UIDeviceOrientationLandscapeRight)
inDesiredOrientation = true;
if (ob == UIDeviceOrientationLandscapeRight)
return YES;
if (inDesiredOrientation)
return NO;
if (o == UIDeviceOrientationLandscapeRight)
return YES;
return NO;
}
@end
extern "C" void PauseUnity() {
unityPaused = true;
UnityPause(true);
}
extern "C" void ResumeUnity() {
unityPaused = false;
UnityPause(false);
}
bool UnityPaused() {
return unityPaused;
}
extern "C" void ShowModalUI()
{
UnityPause(true);
if (uiWindow==nil)
{
UIScreen *MainScreen=[UIScreen mainScreen];
UIScreenMode *ScreenMode=[MainScreen currentMode];
CGSize sSize=[ScreenMode size];
NSString *deviceType = [UIDevice currentDevice].model;
NSString *platformStr = [[DeviceID sharedDeviceID] platformString];
CGRect windowFrame;
if([deviceType isEqualToString:@"iPhone"]) {
windowFrame = CGRectMake(0,0,sSize.width, sSize.height);
} else {
windowFrame = CGRectMake(0,0,sSize.height, sSize.width);
}
uiWindow = [[[UIWindow alloc] initWithFrame: windowFrame] retain];
[uiWindow makeKeyAndVisible];
controller = [RootViewController sharedRootView];
//controller.delegate = mainController;
UINavigationController *naviController = [[UINavigationController alloc] initWithRootViewController:controller];
//[controller release];
[[naviController navigationBar] setBarStyle:UIBarStyleBlack];
naviController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
//[mainController presentModalViewController:navController animated:YES];
[DBConnection openConnection];
[uiWindow addSubview:naviController.view];
//[naviController release];
[controller retain];
//[naviController retain];
uiWindow.rootViewController = naviController;
}
else {
[uiWindow setHidden:NO];
[uiWindow makeKeyAndVisible];
}
}
extern "C" void ShowStore(const char *storeName) {
#if USE_FRONT_END_CTRLR==1
if (strncmp(storeName, "Day ", 4) == 0) {
char *s = (char *) malloc(strlen(storeName) + 1);
strcpy(s, storeName);
NSString *storeNameStr = [[NSString stringWithCString:s encoding:NSUTF8StringEncoding] retain];
[[FBFrontendController sharedFrontEndController] ShowDetailViewOf:storeNameStr];
} else
#endif
{
ShowModalUI();
UnityPause(true);
[uiWindow setHidden:NO];
[uiWindow makeKeyAndVisible];
char *s = (char *) malloc(strlen(storeName) + 1);
strcpy(s, storeName);
[controller ShowStoreByName:s];
}
//[[FBFrontendController sharedFrontEndController] popupDetail];
return;
}
//#ifndef USE_FRONT_END_CTRLR
//extern "C" void _showHTMLGuide() {
//}
//#endif
extern "C" void ShowStore_(const char *storeName) {
ShowStore(storeName);
}