您的位置:首页 > 其它

将Ipone项目转到Ipad平台以及开发同时支持这两个平台的项目 .

2013-03-05 20:05 267 查看
开发同时支持这两个平台的项目:

1、 是在创建新项目的时候,创建基于Window-based Application,窗口中间product项选择Universal(只有基于Window-based才有这个选项)。创建完成如下图:

不同之处在于:少了Resouces Folder,增加了iPad,iPhone,Shared Folder。对iPhone、iPad加以了区分,这种模式笔者认为对于底层数据接口文件、类等共用的可放在Shared Folder,但对于上层类,XIB相应的要创建单独的两份(且不能同名),一种基于iphone,一种基于iPad。两者无关系,所以也不用在代码里进行区分。

2、 是完全用代码实现的项目,通过在代码里识别程序运行的设备,之后你可以根据对应的设备,做响应的试图显示操作。如:

#if(__IPHONE_OS_VERSION_MAX_ALLOWED>= 30200)

if (UI_USER_INTERFACE_IDIOM() ==UIUserInterfaceIdiomPad) {

UILabel*lab = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 200, 100)];

lab.text= @" Runing as an iPad application ";

[self.viewaddSubview:lab];

[lab release];

}

else{

UILabel *lab = [[UILabel alloc]initWithFrame:CGRectMake(50, 50, 100, 50)];

lab.text= @" Running as an iPhone/iPod touch application";

[self.viewaddSubview:lab];

[labrelease];

}

#endif

3、 是针对基于xib的iphone项目,建立两套xib文件,根据程序运行时的运行设备,选择对应的xib文件。

但在我做的Demo中,并不能智能地选择对应xib文件,还是须代码判断设备选择相应xib,稍后做详解。

第3种方法也可以实现将ipone项目转到ipad平台

无论是已有的iphone项目还是新创建的项目(作iphone项目创建)通过以下步骤转到iPad平台。

一、 创建aView-based Application (iPhone) project,命名Demo,然后把此iphone程序升级为Universal程序。点击菜单栏“Project”-〉“UpgradeCurrent Target for iPad…”-〉选择“OneUniversal application”,这样做 Universal 版本,主要是针对mainWindow.xib,会自动生成Resources-iPad文件夹,里面有一个 mainWindow-iPad.xib文件。

在.plist里,应该会有main nib file base name这个Key,对应MainWindow,就是iphone程序的入口;同时会有main nib file base name(iPad),对应MainWindow-iPad这项,如果没有,自己建立一个,universal版本会多出这项,选择即可。然后须自己建立一个xib文件,来作为iPad入口。对应于上面iphone的DemoViewController.xib文件,创建基于iPad名为DemoViewController-iPad的View XIB。 注意:把MainWindow-iPad.xib里的DemoViewController下面Attributes选项卡下NIB Name设置为”DemoViewController-iPad”。此处就设置好了iPad入口。

技巧:对于已有的iPhone版的XIB文件,也可以这样生成iPad XIB,如:打开这个DemoViewController.xib文件,然后点击File ->Create iPad version(usingautosizing masks),会自动生成一个iPad版的DemoViewController.xib,然后另存为名字的iPad的XIB文件,这里命名为DemoViewController-iPad.xib,然后拖到项目里就完成了。

在Build ->Targeted Device Family处,设置为”iPhone/iPad”;

到此,在DemoViewController.xib和DemoViewController-iPad.xib里分别加入不同的显示,分别在iPhone、iPad下运行看是否正确,正确的运行应该是在iPad下程序能自动选择显示DemoViewController-iPad.xib。

以上是解决程序入口问题。

对于其他不是关联在MainWindow 上的XIB文件,程序不能自动选择(现还没有找到方法可以),比如OtherViewController.xib,用上面的技巧生成OtherViewController-iPad.xib并加入到项目中,然后在对应OtherViewController.m中:

- (void)viewDidLoad
{

[super viewDidLoad];
if(UI_USER_INTERFACE_IDIOM() ==UIUserInterfaceIdiomPad)
{
[[NSBundlemainBundle]loadNibNamed:@"OtherViewController-iPad"owner:selfoptions:nil];
}
else
{
[[NSBundlemainBundle]loadNibNamed:@" OtherViewController"owner:selfoptions:nil];
}

}

加入红色部分的code即可,那个loadNibNamed:根据具体的来改。

对于内部的其他代码,若iPhone与iPad版本有区别的话,继续用好上面的if 判断语句就可以了。
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
//iPad version code here
}
else
{
//iPhone/touch version code here
}

参考:http://www.devdiv.com/forum.php?mod=viewthread&tid=116427

http://blog.csdn.net/inkywang/article/details/7074752

/article/5883701.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐