根视图控制器内置在代码中 - 不会为 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 调整大小的主要内容,如果未能解决你的问题,请参考以下文章