【问题标题】:ios how can use multiple nibs control by one viewcontrollerios如何通过一个视图控制器使用多个笔尖控制
【发布时间】:2012-12-31 14:30:04
【问题描述】:
我正在构建一个支持 iOS 5.1.X 和 6.X 的通用应用程序。但我有一个问题要问你们。在 iOS 5.1.X 上不支持自动布局,我想有一个解决方案有 3 个笔尖 1)ipad 2)iphone 视网膜而不是视网膜 3)iphone 5。我想使用 3 个笔尖的原因之一是加载它带有图形和动画,但我不确定这将是最好的解决方案。我想知道您对这种方法的意见或对不同解决方案的建议。
【问题讨论】:
标签:
iphone
ios
ipad
uiviewcontroller
nib
【解决方案1】:
加载三个笔尖不是问题。想象一下,您正在构建一个通用应用程序。现在,如果您尝试在 ipad 和 iphone 上使用相同的 nib 文件,那就大错特错了。你的用户界面都搞砸了。但是对于视网膜和非视网膜,您可以使用 1x 和 2x 图像,以便您可以使用相同的 nib 文件。但如果你真的想在这里使用 3 个 nib 文件,我会说使用 1x 和 2x 图像
【解决方案2】:
你可以这样做
先判断设备是iphone还是ipad
int iphone =0;
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
iphone = 0;
}
else
{
iphone = 1;
}
NSString* nibName;
if(iphone == 0)
{
nibName = @"SettingsiPadView";
}
else
{
nibName = @"SettingsiPadView";
}
Settings* setObj = [[Settings alloc]initWithNibName:nibName bundle:nil];
[self.navigationController pushViewController:setObj animated:YES];
【解决方案3】:
不要让 AutoLayout 强迫您进入这样的角落。您必须记住:XIB 中的布局从来都不是绝对的。您可以选择在-viewDidLoad(或者,甚至更好,-layoutSubviews)中编写布局代码,并且通过一些创造性的数学运算,您甚至可以将您的应用程序缩减为一个通用的 XIB,并在您的视图控制器中使用适当的布局代码。
如果您的应用实际上是通用的,则视图控制器的 XIB 永远不应超过 2 个(iPad 版本和类似 Pod 的设备版本不同,足以保证单独的布局或设计)。