iPhone 移植到 iPad:

来源:http://www.wapera.cn/ipadkaifa/71354.htmlhtml

 iPhone移植到iPad:
  
  
  
  方法一修改设备目标设置(普通模式:一套代码及XIB界面文件,代码分if和else来分别处理多种设备)
  默认状况下,全部的iPhone程序都会运行在他们原始的屏幕大小320x480(非全屏状态),若是你想让你的程序运行在iPad上,且为全屏状态,你须要修改项目设置大家的TargetedDeviceFamily选为iPhone/iPad(这种模式使你的程序能够自动检测运行的设备类型,并使你的程序全屏显示)。
  
  将iPhone运行的iOS版本切换到iPad运行的版本。(当前iPhoneiOS系统版本为4.1,iPad为3.2)。
  修改目标设备族(Build里面的TargetedDeviceFamily选为iPhone/iPad)。
  
  
  如今可使你的程序运行在iPad上了。可是,你会看到你的界面(UI)和iPhone下面彻底同样,这不是咱们须要的。因此,从新布局你的Views是程序员的责任,即重定位(reposition)Views。
  
  首先,咱们须要手工检测运行的设备类型。(使用预编译命令)
  
  #if(__IPHONE_OS_VERSION_MAX_ALLOWED>=30200)
  
  NSString*str;
  
  if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad){
  
  //iPad版本代码;
  
  }
  
  else
  
  //iPhone/iPodtouch版本代码;
  
  #endif
  
  或者
  
  #defineisPad(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)。UI_USER_INTERFACE_IDIOM()方法返回值UIUserInterfaceIdiomPhone或UIUserInterfaceIdiomPad。
  
  
  
  ▪方法二创建通用类型程序(两套代码及XIB界面文件,两套代码及界面互不相干)
  
  上一种方法的缺点是,你必须本身写两个版本(iPhone/iPod和iPad)的代码来适配不一样的平台,同时要动态修改UI布局(及控件尺寸等),是挑战,但也很痛苦。因此,Apple建议你建立“Universal”,即通用型的应用。这样的应用能够在iPhone和iPad下面运行。这须要为各个平台创建相应的.h,.m和.xib文件。后台业务代码天然要写在相应版本的.h,.m文件里面。
  
  升级项目的设备目标到iPad。实质上,这里Xcode把项目的TargetedDeviceFamily设置修改为了iPhone/iPad。Xcode会建立MainWindow.xib文件的副本,并命名为MainWindow-iPad.xib。这时,这两个文件都包含“projectname”ViewController这个ViewController。以下图:
  添加新的对应iPad版本的xib文件到Resource-iPad文件夹。命名规范:“iPad‘功能’ViewController.xib”(或者‘功能’ViewController-iPad.xib”),生成.h,.m,.xib文件。并将这些iPad版本的xxViewController链接到MainWindow-iPad.xib(和正常的iPhone版本同样)。
  这样,选择不一样的模拟器(Simulator)就能够看到同一套代码处理过的相应版本的界面效果。
  
  
  注:首先选择UpgradetheDeviceTargetForiPad,这里Xcode把项目的TargetedDeviceFamily设置修改为了iPhone/iPad。MainWindow.xib和MainWindow-iPad.xib做为两个版本的入口,其余相应版本的ViewController链接到本身的MainWindow(-iPad).xib文件便可。
  看到的效果是:
  ▪方法三维护两套UI库(一套代码及两套XIB界面文件,两套界面公用一套代码)
  这种状况下,你会获得两个可执行体(executables),一个foriPhone/iPodtouch,一个foriPad。
  
  创建iPhone的应用,升级到iPad兼容。方法同二,不一样的是,方法二选的是OneUniversalapplication,而这里选的是Twodevice-specificapplications。
  
  
  这样的话,与方法二创建相应的-iPad版本文件不一样的是,这里是将iPhone版本的文件直接拷贝进Resource-iPad文件夹,文件名称同样。代码只须要一份,只不过须要把Resource和Resource-iPad文件夹下的xxViewController的File'sOwner都设置为Classes文件夹里面的同一个xxViewController类就能够了,其余界面UI元素设置链接到File'sOwner。同时,会产生两个版本的可执行体(executables),“projectname”.app和“projectname”-Upgraded.app。
  
  看到的效果是:同一套代码处理过的相同结果的界面。
  
  
  
  总结:因为实际项目后台生成控件,尤为是TableView会比较多,为了适应iPhone和iPad,能够考虑用第三种方法,一套代码,两套XIB界面。后台加载时,用:
  
  
  
  if(isiPad){
  
  UITableViewController*tableViewController=[[UITableViewControlleralloc]initWithNibName:@"iPadxxViewController"bundle:nil];
  
  }
  
  else{
  
  UITableViewController*tableViewController=[[UITableViewControlleralloc]initWithNibName:@"iPhonexxViewController"bundle:nil];
  
  }
  
  便可。iPadxxViewController和iPhonexxViewController分别表明相应的iPadxxViewController.xib和iPhonexxViewController.xib文件。程序员

相关文章
相关标签/搜索