[英]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.