[英]Difference UI for portrait and landscape ipad
我想創建一個這樣的應用程序:
在iPhone(縱向和橫向)和iPad縱向上,我都有一個表格視圖屏幕,點擊項目行將導航到另一個詳細信息屏幕,就像其他基本應用程序一樣。
但是,當我旋轉屏幕以在ipad上橫向移動時,屏幕現在具有兩個剖面圖
這是我所做的:
isInLandscapeTablet
方法來檢測iPad橫向 UINavigationController
作為根控制器來控制所有其他視圖 UISplitViewController
,然后將其推入根控制器 但是問題是我不能將UISplitViewController推送到根控制器,因為它需要成為根控制器。
我不知道如何解決這個問題
我的方法正確嗎? 還有其他辦法嗎?
更新 :我這樣更改根視圖控制器
// this snippet is in UINavigationController (I use as root viewcontroller)
if([self isInTabletLandscape]){
self.splitViewController.viewControllers = [NSArray arrayWithObjects:[[CategoryViewController alloc] initWithNibName:@"CategoryViewController" bundle:nil], self.propertyLandViewController, nil];
[[UIApplication sharedApplication].keyWindow setRootViewController:self.splitViewController];
}else{
// it doesn't work
[[UIApplication sharedApplication].keyWindow setRootViewController:self];
}
}
知道設備是iPad還是iPhone后。 您可以嘗試刪除RootViewController。
appDelegate.window.rootViewController = nil;
然后使用新的SplitViewContloller設置根視圖控制器
id objClass =[[SplitViewController alloc]initWithNibName:@"SplitViewController" bundle:nil];
masterVC.delegate = detailVC;
detailVC.delegate = objClass;
[objClass setViewControllers:@[masterNavigate,detailNavigate]];
[appDelegate.window setRootViewController:objClass];
如果您是在iOS 8上進行開發,則應使用Size Classes ,以便可以完全根據iPhone / iPad portrait和iPad Landscape更改布局。 不幸的是,在iOS 7上,尺寸類別只能區分iPhone和iPad。
在這兩種情況下,正確的部分(2)都可以使用containerView輕松處理。
我的建議是根本不要使用Split View Controller。 創建一個自定義視圖控制器,它將嵌入您的表視圖控制器和第二個控制器。 另外,您可以在創建的自定義控制器中實現接口旋轉邏輯。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
MyFirstViewController* firstVC = [[MyFirstViewController alloc] init];
MySecondViewController* secondVC = [[MySecondViewController alloc] init];
if ( ([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortrait) ){
UISplitViewController* splitVC = [[UISplitViewController alloc] init];
splitVC.viewControllers = [NSArray arrayWithObjects:firstVC, secondVC, nil];
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
window.rootViewController = splitVC;
[window makeKeyAndVisible];
}
else
{
// Display tableview
}
return YES;
}
我認為這可能對您有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.