1. xib转换

iPhone版本APP开发完成后需要再开发iPad版本的APP,需要把iPhone版本的xib文件添加到iPad项目中去,但是Xcode中iPhone和iPad使用的xib格式不能完全互换,此时需要转换xib的文件内容。

分析iPad和iPhone的xib文件,可知两者之间的区别,直接使用source方式打开xib文件,检索替换并保存即可。
以下是iPad和iPhone的xib文件之间的区别,请注意区分xib的文件版本。

旧版本(Xcode4.2)

iPad

type=”com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB”
<string key=”targetRuntimeIdentifier”>IBIPadFramework</string>

iPhone

type=”com.apple.InterfaceBuilder3.CocoaTouch.XIB”
<string key=”targetRuntimeIdentifier”>IBCocoaTouchFramework</string>

新版本
iPad

targetRuntime=“iOS.CocoaTouch.iPad”
type=”com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB”

iPhone

targetRuntime=“iOS.CocoaTouch”
type=”com.apple.InterfaceBuilder3.CocoaTouch.XIB”

如果文件量太多的话,那可以使用以下shell脚本批量替换
iPhone -> iPad

1
2
3
4
5
6
find . -type f -name '*.xib' | xargs perl -pi -e \
's|\"com\.apple\.InterfaceBuilder3\.CocoaTouch\.XIB\"|\"com\.apple\.InterfaceBuilder3\.CocoaTouch\.iPad\.XIB\"|g'
find . -type f -name '*.xib' | xargs perl -pi -e \
's|IBCocoaTouchFramework|IBIPadFramework|g'
find . -type f -name '*.xib' | xargs perl -pi -e \
's|\"iOS\.CocoaTouch\"|\"iOS\.CocoaTouch\.iPad\"|g'

iPad -> iPhone

1
2
3
4
5
6
find . -type f -name '*.xib' | xargs perl -pi -e \
's|\"com\.apple\.InterfaceBuilder3\.CocoaTouch\.iPad\.XIB\"|\"com\.apple\.InterfaceBuilder3\.CocoaTouch\.XIB\"|g'
find . -type f -name '*.xib' | xargs perl -pi -e \
's|IBIPadFramework|IBCocoaTouchFramework|g'
find . -type f -name '*.xib' | xargs perl -pi -e \
's|\"iOS\.CocoaTouch\.iPad\"|\"iOS\.CocoaTouch\"|g'

命令说明:

1
find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g'

2、修改xib的视图尺寸

在xib文件上右键,选择“Open As -> Interface Builder – iOS”,用IB模式打开。

选择xib文件中的根视图(UIView),在属性面板中找到Size选项,将其改为Full iPad Screen.

现在,你可以有一个iPad版本的xib了。

重要警告:   1.为了解决对iPAD版本换图片的烦恼,建议大家在iphone的 XIB中  使用 两倍的高清图,
                         这样生成的ipAD 版本的XIB 的图片就是你想要的、、、
                    2. *转好的ipad XIB 界面可能需要微调一些字体等、、、、

iPhone的xib与iPad的xib相互转换的更多相关文章

  1. iOS开发——UI基础-自定义构造方法,layoutSubviews,Xib文件,利用Xib自定义View

    一.自定义构造方法 有时候需要快速创建对象,可以自定义构造方法 + (instancetype)shopView { return [[self alloc] init]; } - (instance ...

  2. iPhone、iPod和iPad离线固件升级的方法

    我们知道iOS升级的过程过程超级简单,特别是在线升级只需要点击几个按钮就ok了,但是对于开发者来说,经常升级的iOS固件都是preview版的,需要自己下载好固件之后,手动来更新,我找了一下网上的资料 ...

  3. iphone开发中使用nib(xib)文件的内存管理

    iphoneuinavigationcontrollercocoauiviewvariableswindows 在使用nib文件做界面开发的过程中,加载nib文件后,由于设置了outlet和deleg ...

  4. 5个步骤,将 storyboard 从 iphone 版转变为 ipad 版

    1.将 iPhone 版的 Storyboard 复制为 iPad 的,比如 Main_iPad.storyboard 2.用文本编辑器(不要用 Xcode)打开 Main_iPad.storyboa ...

  5. 如何判断 ios设备的类型(iphone,ipod,ipad)

    功能函数: -(bool)checkDevice:(NSString*)name { NSString* deviceType = [UIDevice currentDevice].model; NS ...

  6. 怎样推断 ios设备的类型(iphone,ipod,ipad)

    -(bool)checkDevice:(NSString*)name { NSString* deviceType = [UIDevice currentDevice].model; NSLog(@& ...

  7. iOS:界面适配(二)--iPhone/iPad适配(关于xib)

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

  8. 在Xcode4 中将iPhone使用的xib转换成iPad使用的xib

    来源:http://blog.3snews.net/space.php?uid=6188&do=blog&id=64200 http://www.giser.net/?p=982 1 ...

  9. HOWTO: Create native-looking iPhone/iPad applications from HTML, CSS and JavaScript

    HOWTO: Create native-looking iPhone/iPad applications from HTML, CSS and JavaScript Though it's not ...

随机推荐

  1. Java-内存模型 synchronized 的内存语义

    synchronized 具有使每个线程依次排队操作共享变量的功能.这种同步机制效率很低,但 synchronized 是其它并发容器实现的基础. 一.锁对象及 synchronized 的使用 sy ...

  2. LinkedBlockingQueue与ArrayBlockingQueue

    阻塞队列与普通的队列(LinkedList/ArrayList)相比,支持在向队列中添加元素时,队列的长度已满阻塞当前添加线程,直到队列未满或者等待超时:从队列中获取元素时,队列中元素为空 ,会将获取 ...

  3. [LeetCode] 49. Group Anagrams 分组变位词

    Given an array of strings, group anagrams together. For example, given: ["eat", "tea& ...

  4. [LeetCode] 151. Reverse Words in a String 翻转字符串中的单词

    Given an input string, reverse the string word by word. For example,Given s = "the sky is blue& ...

  5. kubernetes-subpath用法(把文件挂载在已存在的目录下,不覆盖原目录)

    以ngxin的配置文件为例子: nginx-deployment.yaml : apiVersion: v1 kind: ConfigMap metadata: name: nginx-cm data ...

  6. 【ARM-Linux开发】Ubuntu下的/usr目录权限,导致不能使用sudo命令的修复

    刚开始运行sudo时,报了下面这个错误 sudo: must be setuid root,于是上网找解决方法,搜索出来的都是这样解决的 ls -l  /usr/bin/sudochown root: ...

  7. SpringBoot系列教程JPA之update使用姿势

    原文: 190623-SpringBoot系列教程JPA之update使用姿势 上面两篇博文拉开了jpa使用姿势的面纱一角,接下来我们继续往下扯,数据插入db之后,并不是说就一层不变了,就好比我在银行 ...

  8. 用vue实现列表分页和按钮操作

    为中华之崛起而读书 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  9. 小程序云函数,解决接口https问题

    本实例只是简单记录http请求 1,云函数如下 // 云函数入口函数 exports.main = async (event, context) => { let req = await got ...

  10. Kafka排队:Apache Kafka作为消息传递系统

    1.目标 在这个Apache Kafka教程中,我们将学习Apache Kafka  Queuing 的概念  .基本上,Kafka中的排队是传统消息传递的模型之一.所以,让我们首先简要介绍Kafka ...