iOS:适配(一)--Universal通用程序 iPhone、iPad界面(方法)

原创 2014年10月13日 14:10:34

     前言

        一个Universal程序还是iPhone、iPad俩个版本 ?

        通用的:         

优点:

一个安装包,方便管理、分发

可共用一套逻辑代码,数据结构
缺点:
安装包会很大:iPad版本用的图片与iPhone版本的不一样,而且iPad的图片大小比较大,积压起来,会导致整个安装包很大
代码中各种判断是否iPad的逻辑分支,会导致代码混乱
        俩个版本的:
优点:
app可分别针对iPad、iPhone的特点做设计
安装包相对会比较小
缺点:
两个按照包,不易于管理、分发

       建议:如果你的app,iPad版本跟iPhone版本的界面是差不多的,就做兼容iPad和iPhone的app,否则就分开做iPad版、iPhone版。

    前提

        修改目标设备族(Build里面的Targeted Device Family选为iPhone/iPad ),如果未修改的话,在iPad上运行的话,还是iPhone界面,只不过能“2x”放大缩小,修改完target device之后,显示是iPad界面,原有iPhone上的界面效果在iPad只占屏幕一部分(ios 6以后发现,无论Target Device是否为Universal,运行什么device,显示该机器界面大小,至于显示效果是只占一部分还是超出屏幕,看代码怎么写的)

      方案1:一套代码及XIB界面文件,代码分if和else来分别处理多种设备     

         适用条件:

         iPhone、iPad界面布局一样,比例相同,只不过大小不一样,直接在initWithFrame、initWithCorder里面做比例变换即可。

      方案2:一套代码及两套XIB界面文件,两套界面公用一套代码

        适用条件:
          iPhone、iPad界面布局不一样,功能、流程、业务逻辑差不多

相关技术:

1.代码里不同逻辑处理:
if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad){
//iPad 版本代码;
}
else{
//iPhone/iPod touch 版本代码;
}
2.关于资源文件: 
         iOS Supports Device-Specific Resources(参考:官网中《Resource Programming Guide》iOS Supports Device-Specific Resources小节):格式如下: 
<basename><device>.<filename_extension>
 device说明:一般都是:xxx~ipad.extension + xxx.extension俩套(不必xxx~iphone.extension)
~ipad - The resource should be loaded on iPad devices only.
~iphone - The resource should be loaded on iPhone or iPod touch devices only.
          意味着,
// 图片
UIImage* anImage = [UIImage imageNamed:@"MyImage.png"];
// On an iPhone or iPod touch device, the system loads the MyImage~iphone.png resource file, while on iPad, it loads the MyImage~ipad.png resource file. If a device-specific version of a resource is not found, the system falls back to looking for a resource with the original filename, which in the preceding example would be an image named MyImage.png
// xib
MyViewController *viewController = [[MyViewController alloc] 
                                     initWithNibName:@"MyViewController" bundle:nil]
// load MyViewController~ipad.xib on an iPad, and MyViewController.xib on other devices
// 其他类似

3.关于初始配置:



          在info.plist文件中,Launch  image、Main nib file base name、Main storyboard file base name、Supported Interface Orientation这些类似,都能设置成iPhone、iPad不同版本。
          对于AppIcon,Image.xcasset里面也有俩套图片。

      方案3:两套代码及XIB界面文件,两套代码及界面互不相干

相关技术:
@interface ViewController : UIViewController
@end

@interface ViewController_iPad : ViewController
@end

@interface ViewController_iPhone : ViewController
@end
          适用条件:
          iPhone、iPad界面布局不一样,功能、流程、业务逻辑不一样

------------------------
参考: 
iPhone 移植到 iPad:http://blog.csdn.net/ch_soft/article/details/7099534
iOS Supports Device-Specific Resources小节:《Resource Programming Guide》
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/houseq/article/details/39990343

iOS设备、Icon、LaunchImage、图片分辨率

摘要: iOS的各种设备的分辨率,以及开发用的Icon、LaunchImage的分辨率。
  • NewbieProgrammer
  • NewbieProgrammer
  • 2016-01-23 13:06:05
  • 5269

IOS纯代码实现AutoLayout适配多屏幕

关于AutoLayout,最早从iOS6开始引入使用。主要功能是使用约束,对视图进行相对布局,以适应不同屏尺的变换。网上大量的资料都在介绍xib和storyboard,如何使用AutoLayout,说...
  • watertekhqx
  • watertekhqx
  • 2017-05-26 09:54:09
  • 476

iOS 如何 分别为 iPad 和 iPhone 建立 不同的 storyboard

iOS 如何 分别为 iPad 和 iPhone 建立 不同的 storyboard    写了一个iphone的程序,storyboard是iphone的,如果想将程序转为ipad的storybo...
  • jeffasd
  • jeffasd
  • 2016-03-04 10:37:49
  • 1134

ios学习之universal

iOS Programming Tutorial: Creating a Universal App november 8, 2013 by simon ng 1 comment ...
  • wangeen
  • wangeen
  • 2014-02-16 16:04:50
  • 2539

使程序同时支持iphone和ipad

在AppDelegate里,通过获取UIDevice的userInterfaceIdiom属性,可以检测到当前程序是运行在iphone或者是ipad上,分别加载相应的视图,就能在两种设备中正常的运行起...
  • weichuang_1
  • weichuang_1
  • 2015-09-25 09:25:32
  • 274

IOS之ipad和iphone之间的xib的适配所有的屏幕

今天在项目中运到了这个的一个问题,就是在原来的xib的是适配所有的iphone屏幕,然而现在既要适配iphone 也要适配Ipad,搞的很头大,现在就为了实现这个效果,老大给我了两种方法,就是在xib...
  • moon_prince2013
  • moon_prince2013
  • 2015-10-12 20:34:08
  • 1276

关于iPad app适配iphone

最近公司需要将iPad app适配到手机上,不过这个iPad  app不算复杂,下面我就把我适配过程中的经验发出来 1.iPad界面布局和手机布局差距太大怎么办 这是我的iPad的登录界面,我是s...
  • Simona_1973
  • Simona_1973
  • 2018-01-30 17:31:12
  • 127

现在提交iOS应用,必须要提供 iPad Pro 的截图和视频么?有没有选项可以绕过去

pp 可以选择 Devices 的。选择 iPhone 表示这个 App 只能在 iPhone 上使用,选择 iPad 表示这个 App 只能在 iPad 上使用,选择 Universal 表示同一个...
  • wlanye
  • wlanye
  • 2017-11-13 14:24:55
  • 677

iOS:适配(二)--Universal通用程序 iPhone、iPad界面(关于xib)

在xcode中
  • houseq
  • houseq
  • 2014-10-13 18:12:54
  • 8627

iOS设备屏幕尺寸和适配

屏幕适配iOS
  • Melissa_htt
  • Melissa_htt
  • 2017-06-07 15:03:30
  • 2948
收藏助手
不良信息举报
您举报文章:iOS:适配(一)--Universal通用程序 iPhone、iPad界面(方法)
举报原因:
原因补充:

(最多只允许输入30个字)