根视图控制器内置在代码中 - 不会为 iPad 调整大小

Posted

技术标签:

【中文标题】根视图控制器内置在代码中 - 不会为 iPad 调整大小【英文标题】:Root view controller is built in code - Wont resize for iPad 【发布时间】:2012-10-04 09:58:01 【问题描述】:

我正在尝试将我的 iphone 应用程序转换为 ipad,在我的根视图控制器之前一切正常。它是内置在代码中的,无论我做什么,我都无法调整它的大小/居中。我的主页没有笔尖。自动调整大小蒙版没有任何作用,尽管尽了最大努力,添加 iPad 笔尖也没有任何作用,但会继续在左上方显示 iphone 屏幕,并使用if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 加载一个空白的黑色 iPad 屏幕。我现在真的不知道该怎么办。如果我将我的屏幕元素设置为initWithFrame:[[UIScreen mainScreen] bounds]];,则艺术品会因过度拉伸而变形。

// Create the main view
UIView *mainView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
mainView.backgroundColor = [UIColor blackColor];



 if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 

 UIImageView *textureBg = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 768.0f, 1024.0f)];
 textureBg.image = [UIImage imageNamed:@"BgTexture"];
 [textureBg addSubview:textureBg];

 else 

// Add textured background
UIImageView *textureBg = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320.0f, 1024.0f)];
textureBg.image = [UIImage imageNamed:@"BgTexture"];
[textureBg addSubview:textureBg];

 


if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)     

 UIImageView *clipBg = [[UIImageView alloc] initWithFrame:CGRectMake(7.0f, 6.0f, 605.0f, 865.0f )];
 clipBg.image = [UIImage imageNamed:@"BgHomeNew2"];
 clipBg.userInteractionEnabled = YES;

 
 else 
// Add clipboard background
UIImageView *clipBg = [[UIImageView alloc] initWithFrame:CGRectMake(7.0f, 6.0f, 305.0f, 465.0f )];
clipBg.image = [UIImage imageNamed:@"BgHomeNew2"];
clipBg.userInteractionEnabled = YES;
//[clipBg setAutoresizingMask:(UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleTopMargin )];


   if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)  

// Add about button to clipbg
UIButton *aboutButton = [UIButton buttonWithType:UIButtonTypeCustom];
aboutButton.frame = CGRectMake(240.0f, 90.0f, 31.0f, 33.0f);

[aboutButton setImage:[UIImage imageNamed:@"LabelButton"] forState:UIControlStateNormal];
[aboutButton addTarget:self action:@selector(aboutButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
[aboutButton addSubview:aboutButton];


else 
// Add about button to clipbg
UIButton *aboutButton = [UIButton buttonWithType:UIButtonTypeCustom];
aboutButton.frame = CGRectMake(240.0f, 90.0f, 31.0f, 33.0f);

[aboutButton setImage:[UIImage imageNamed:@"LabelButton"] forState:UIControlStateNormal];
[aboutButton addTarget:self action:@selector(aboutButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
[aboutButton addSubview:aboutButton];

如何为通用应用程序制作 ipad 视图,其中根视图控制器内置在代码中?我什至愿意将 iphone 屏幕简单地居中于 ipad 屏幕的中间,但由于自动调整不起作用,它只是卡在了左上角。这将是 2 分钟的 IB!

总结一下为什么下面的代码不会将图像移动到iPad屏幕的中心?

 UIImageView *clipBg = [[UIImageView alloc] initWithFrame:CGRectMake(7.0f, 6.0f, 305.0f, 465.0f )];  
clipBg.image = [UIImage imageNamed:@"BgHomeNew2"];
clipBg.userInteractionEnabled = YES;
[clipBg setAutoresizingMask:(UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin)];

编辑 真的不知道我在这里错过了什么,现在已经一整天了,似乎无法在内置代码的 iphone 屏幕上追溯添加 xib,所以我会在使用 ipad 时将对象居中放在屏幕中间而不是一直卡在左上角。那剂量也有效。

【问题讨论】:

这可能是一个愚蠢的问题,但您是否将“目标设备系列”设置为“iPhone/iPad”?另外,你的窗口大小合适吗? 是的,我的所有其他视图都有笔尖,而且 ~ipad 笔尖,这些都可以正常工作,只是这个内置代码的屏幕就是问题所在 听起来mainView 是您要调整大小的那个。该视图是如何添加到窗口中的?你希望[textureBg addSubview:textureBg];[aboutButton addSubview:aboutButton]; 做什么? @Jonah 视图添加到应用委托ICHomeController *homeController = [[ICHomeController alloc] init]; UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:homeController]; navController.navigationBarHidden = YES; navController.navigationBar.barStyle = UIBarStyleBlackOpaque; navController.navigationBar.tintColor = [UIColor grayColor]; self.navigationController = navController; [self.window setRootViewController:self.navigationController]; [self.window makeKeyAndVisible]; return YES; 如何设置窗口? window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];[window addSubview:navController.view]; [窗口布局子视图]; 【参考方案1】:

好的,整理好了

我现在终于可以添加 xibs 以便我可以根据需要进行调整,我之前无法初始化 xibs,因为我在 rootview 控制器中错过了这行代码

- (id)init


[[NSBundle mainBundle] loadNibNamed:@"ICHomeController" owner:self options:nil];

【讨论】:

以上是关于根视图控制器内置在代码中 - 不会为 iPad 调整大小的主要内容,如果未能解决你的问题,请参考以下文章

在根视图控制器上管理视图控制器,如 iPad 中的子视图

在拆分视图控制器的根视图中放置固定位置工具栏

当被模态视图控制器覆盖时,iOS 6 视图控制器布局在方向更改后不会更新

旋转 iPad 时,视图控制器没有一直向右延伸

iPad Xib 不显示

如何将根视图控制器默认为 1024x768 大小的横向