ios适配iPhoneiPad

Pinkney 关注

0.1 2017.11.14 17:27 字数 423 阅读 4211评论 3喜欢 7

最近项目需要兼容iPad,由于项目使用xib和Storyboard,故记录对iPhone和iPad的适配!

iPhone和ipad适配分为两种种:

1.为iPad和iPhone分别开发不同的项目(适合两个项目区别比较大,要分别发布)

2.一个项目同时兼容iPhone和iPad;

本文只对第二种情况(一个安装包同时兼容iPhone和ipad)

要在一个工程中兼容ipad和iPhone步骤:

1.设置targets->Deployment Info ->Devices 选择Universal

Storyboard:

2.选中storyboard文件,假设名字为Main.storyboard;

3.File--->duplicate,将文件命名为Main_ipad.storyboard:(注意一点要设置为_ipad,需要和下面的代码匹配)

4.右键Main_ipad.storyboard,open as ---> source code,找到targetRuntime,将其修改为targetRuntime="iOS.CocoaTouch.iPad"

5、调用storyboardWithName方法改为storyboardAdapter;

针对5需要为UIStoryboard建类别UIStoryboard+Adapter

UIStoryboard+Adapter.h

#import

@interfaceUIStoryboard (Adapter)

+ (UIStoryboard*_Nullable)storyboardAdapter:(nonnullNSString*)name bundle:(nullableNSBundle*)storyboardBundleOrNil;

@end

UIStoryboard+Adapter.m

#import"UIStoryboard+Adapter.h"

@implementationUIStoryboard (Adapter)

+ (UIStoryboard*)storyboardAdapter:(NSString*)name bundle:(nullableNSBundle*)storyboardBundleOrNil

{

UIStoryboard*storyBoard;

if((UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)) {

NSString*ipad = [namestringByAppendingString:@"_ipad"];

storyBoard = [UIStoryboardstoryboardWithName:ipadbundle:storyboardBundleOrNil];

}

else

{

storyBoard = [UIStoryboardstoryboardWithName:namebundle:storyboardBundleOrNil];

}

returnstoryBoard;

}

@end

使用方法:

UIStoryboard*storyBoard = [UIStoryboard storyboardAdapter:@"Main"bundle:nil];

Xib:

前四步一样,第五步:需要新建UIViewController类别 UIViewController+Adapter

UIViewController+Adapter.h

@interfaceUIViewController (Adapter)

- (instancetype_Nullable)initWithAdapterNibName:(nullableNSString*)nibNameOrNil bundle:(nullableNSBundle*)nibBundleOrNil;

@end

UIViewController+Adapter.m

@implementationUIViewController (Adapter)

- (instancetype)initWithAdapterNibName:(nullableNSString*)nibNameOrNil bundle:(nullableNSBundle*)nibBundleOrNil

{

UIViewController*tmpVC;

if((UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)) {

NSString*ipad = [nibNameOrNilstringByAppendingString:@"_ipad"];

tmpVC = [selfinitWithNibName:ipadbundle:nibBundleOrNil];

}

else

{

tmpVC = [selfinitWithNibName:nibNameOrNilbundle:nibBundleOrNil];;

}

returntmpVC;

}

@end

最后针对ipad和iPhone图片的兼容:

使用Assets.xcassets选择图片后->Devices中选择iPhone和iPad

ios适配iPhone和iPad相关推荐

  1. ios 区分iphone ipod ipad的方法及获取设备名称。

    coding如何区分iphone ipod & ipad 的几种方法 UI_USER_INTERFACE_IDIOM Returns the interface idiom supported ...

  2. ios 判断iPhone、iPad硬件型号

    方法1: #include <sys/sysctl.h> - (NSString *) platform {       size_t size;       sysctlbyname(& ...

  3. 如何将音视频发布到移动设备,android,ios,iphone,ipad等

    在现实生活中,手机和移动设备使用地越来越多,如何将音视频点播和直播发布到移动设备,这就涉及到很多相关的知识,比如android接收的音视频有哪些格式,分辨率是什么样子的,而ios设备接收的情况又是什么 ...

  4. 『IOS』iPhone和ipad键盘高度及键盘响应事件

    原文地址:http://blog.csdn.net/benbenxiongyuan/article/details/7892019 IPAD键盘高度: portrait  264 landscape ...

  5. ipad iphone开发_如何修复iPhone或iPad上崩溃的应用程序

    ipad iphone开发 N.Z.Photography/ShutterstockNZ摄影/快门 Apps can crash or freeze on iPhones and iPads, jus ...

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

    本文纯属个人看法,强迫症后遗症 版本:xcode 6.0 + iOS SDK 8.0 讨论范围:控制器的view(创建VC时自带的xib) ------------------------------ ...

  7. IOS 开发 iPhone屏幕尺寸、分辨率及适配

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 1.iPhone尺寸规格 设备 iPhone 宽 Width 高 Height 对角线 Diagonal 逻辑分辨率(point ...

  8. 支付宝iOS版9.2上架:适配iPhone 6s、生活圈、阅后即焚

    10月15日消息,今天苹果iOS版支付宝迎来了9.2版本更新,多个重磅新功能让新版支付宝变得更加强大.生活圈和"阅后即焚"的加入让支付宝渐渐不再是一个简单的支付工具,更像是一个集成 ...

  9. ipad和iphone适配_如何在iPhone和iPad上调节音乐均衡器

    ipad和iphone适配 Anna-Marie/Shutterstock.com 安娜·玛丽/Shutterstock.com Apple's Music app has a built-in eq ...

  10. ipad和iphone适配_如何通过内容缓存在Mac,iPhone和iPad上加快下载速度

    ipad和iphone适配 Are there multiple iPhones and iPads in your house? What about Macs, or Apple TVs? Hav ...

最新文章

  1. Selenium 2 WebDriver 多线程 并发
  2. 五、逆向工程--myeclipse快速开发Hibernate项目
  3. 【计算机网络】数据链路层 : 选择重传协议 SR ( 帧分类 | “发送方“ 确认帧、超时事件 | “接受方“ 接收帧机制 | 滑动窗口长度 | 计算示例 )★
  4. 【AR实验室】OpenGL ES绘制相机(OpenGL ES 1.0版本)
  5. 中国工程机械制造行业运营状况及发展方向预测报告2021-2027年
  6. 概率论回顾.pptx
  7. 你不就是加了 2 行代码,为什么要用 2 天?
  8. 常见的14种异常心电图的波形特点
  9. 高性能mysql 聚簇索引,高性能MySQL笔记-第5章Indexing for High Performance-005聚集索引...
  10. X云微专业-功能测试需求分析
  11. html期末作业代码网页设计——代码质量好-宠物网(8页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码
  12. 我买了个5g手机,但是手机卡是4g的,能使用吗?
  13. for循环小技巧,遍历数组的时候要使用恰当
  14. 小学计算机课题研究方案,课题研究方案范文《小学信息技术课堂有效教学的探索》...
  15. opencv2读取摄像头并保存为视频
  16. BZOJ 4399: 魔法少女LJJ
  17. 如何设计用户体验测试用例
  18. 如有定义int a=128; 则输出语句printf(“%o”,a);的输出结果为?。
  19. [Unfinished] 28_α = β_Direct_Current_Non_Loop_Curren
  20. 如何检查是否安装了python_检查是否安装了Python Package

热门文章

  1. 中科院计算机所博士何飞,2017年中科院计算所博士生招生考试说明
  2. 开源一个 Python 算法和数据结构中文教程
  3. 嵌入式测试 模拟共享单车
  4. python 中 while 语句的练习题
  5. Linux下恢复误删的文件
  6. 信息科学技术与创新之“知识升华”
  7. MP3合并(MP3剪切器V2.0)
  8. 《蜗居》台词100句 血淋淋的经典
  9. C语言文本文档汉字乱码处理问题
  10. 【物联网】物联网关键技术与应用分析