将iPhone xib转换为iPad xib?

时间:2010-03-21 18:52:06

标签: ios iphone xcode ipad xib

你是怎么做到的?我看到了一个视频教程,但屏幕太小了。此外,除了更改视图大小外,我还需要对我的iphone应用程序进行其他重大更改才能转换为iPad吗?

17 个答案:

答案 0 :(得分:159)

我能够将其缩小到几个方面,所以这里有适合我的步骤:

1)制作iPhone xib文件的副本并将其添加到项目中

2)右键单击文件(在xcode中)和Open As>源代码

3)第二行应该如下:

<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">

替换为:

<archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="7.10">

4)搜索“IBCocoaTouchFramework”并将所有匹配项替换为“IBIPadFramework”

5)保存文件并打开为&gt; Interface Builder - iOS

该文件可能仍然看起来像普通的iPhone xib,但对我来说,一旦我在“属性”检查器中将状态栏更改为“黑色”,其余的xib就会“抢占”到iPad xib中

答案 1 :(得分:33)

在Xcode 5中你应该只是:

查找:

<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="4510" systemVersion="12F37" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">

替换为:

<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="4510" systemVersion="12F37" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none">

请注意,我们只是将 .iPad 添加到typetargetRuntime属性中。

打开后,只需选择要调整的新尺寸。示例:iPad全屏。

答案 2 :(得分:29)

假设您使用Xcode 3

的SDK
  1. 开放IB。
  2. 打开XIB。
  3. 文件 - &gt;使用自动调整遮罩创建iPad版本。

答案 3 :(得分:22)

XCode4:

在xcode 4中,我们无法为单个xib执行此操作,但我们可以同时创建各自的ipad版本。

在将项目配置为ipad之前,只有为iphone配置项目时,右键单击目标并单击复制。

现在选择“复制并转换到ipad”。创建一个新的目标和一组新的xib。它应该减少一些工作。

希望它有所帮助。

答案 4 :(得分:14)

Xcode 4

使用自动调整大小的创建iPad版本功能已从Xcode 4中删除。 现在最简单的方法是使用Xcode 3进行转换,因为nib(.xib)文件格式没有改变。

Xcode 3&amp;现在可以通过简单地选择不同的文件夹将4安装在同一系统上(请参阅磁盘映像上的安装说明)。

否则,您需要复制/粘贴iPhone版本的UI元素,并将它们重新链接到您的代码。

答案 5 :(得分:6)

让电脑做电脑的工作怎么样? 更快,更少的错误风险。

以下是基于excellent answer from Jag的工作流程,但是使用sed。

自动完成

首先,让我们设置一些东西。我们只需要这样做一次。
在包含XIB的目录中,使用以下内容创建两个文件:

档案iPhoneToiPadXIBConversion.sed

s/com.apple.InterfaceBuilder3.CocoaTouch.XIB/com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB/g
s/IBCocoaTouchFramework/IBIPadFramework/g

和档案iPadToiPhoneXIBConversion.sed

s/com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB/com.apple.InterfaceBuilder3.CocoaTouch.XIB/g
s/IBIPadFramework/IBCocoaTouchFramework/g


安装程序现已完成。 要转换XIB,请在终端中输入以下两个命令之一:

iPhone转iPad转换:

sed -f iPhoneToiPadXIBConversion.sed  MyViewController~iphone.xib  > MyViewController.xib

iPad转iPhone:

sed -f iPadToiPhoneXIBConversion.sed  MyViewController.xib  > MyViewController~iphone.xib





为了好玩,让我们在zsh中创建两个函数,使转换更简单:

function convertiPadXIBToiPhone () {
    newXibName=`echo "$1" | /usr/bin/sed "s/.xib/~iphone.xib/"`
    `/usr/bin/sed -f iPadToiPhoneXIBConversion.sed "$1" > "$newXibName"`
    echo "Did convert $1 to $newXibName."
}

function convertiPhoneXIBToiPad () {
    newXibName=`echo "$1" | /usr/bin/sed "s/~iphone.xib/.xib/"`
    `/usr/bin/sed -f iPhoneToiPadXIBConversion.sed "$1" > "$newXibName"`
    echo "Did convert $1 to $newXibName."
}

将此添加到zsh配置后,转换XIB非常简单:

convertiPadXIBToiPhone MyViewController.xib

convertiPhoneXIBToiPad MyViewController.xib

答案 6 :(得分:5)

使用“view as source code”在XCode 4中打开XIB。

之前

备份有问题的笔尖。

替换这个goo

    <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
    <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
        <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
        <integer value="1056" key="NS.object.0"/>
    </object>
    <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
        <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
        <integer value="3100" key="NS.object.0"/>
    </object>
    <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
    <int key="IBDocument.defaultPropertyAccessControl">3</int>
    <string key="IBCocoaTouchPluginVersion">301</string>

这个其他的goo

    <string key="IBDocument.TargetRuntimeIdentifier">IBIPadFramework</string>
    <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
        <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
        <integer value="3100" key="NS.object.0"/>
    </object>
    <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
    <int key="IBDocument.defaultPropertyAccessControl">3</int>
    <string key="IBCocoaTouchPluginVersion">301</string>

两个

然后,对于使用集成IB的笔尖中的每个视图,删除它然后点击撤消。

然后在热水中淋浴,以消除你可能有的那种令人作呕的感觉。

答案 7 :(得分:4)

您可以将XIB作为文本文件打开并更改UIView大小:

在导航器中右键单击您的XIB文件,然后选择:“打开为...” 作为源文件打开。

找到UIView引用并更改Frame值:

<object class="IBUIView" id="191373211">

<string key="NSFrame">{{0, 20}, {768, 1024}}</string>

答案 8 :(得分:3)

Xcode 5更新

  

targetRuntime =&#34; iOS.CocoaTouch&#34;

  

targetRuntime =&#34; iOS.CocoaTouch.iPad&#34;

答案 9 :(得分:3)

在XCode 4.3.2中,我创建iPad版xib的最简单方法是复制该xib文件并在文件名中添加~ipad后缀。并将“myVC.xib”和“myVC~ipad.xib”添加到您的项目中。请注意,它是“~ipad”而不是“~iPad”。您的应用程序将在iPad上运行时自动使用该~ipad版本。这也适用于资源文件(例如图像)。

目前我能找到的最佳参考资料...... https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/LoadingResources/ImageSoundResources/ImageSoundResources.html

答案 10 :(得分:2)

杰克的答案很棒。但是如果在Xcode 5中打开/创建XIB,则会有一个问题。

对于Xcode 5

1)制作iPhone xib文件的副本并将其添加到项目中

2)右键单击文件(在xcode中)和Open As&gt;源代码

3)第二行应该如下:

<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="4510"

将其更改为

<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="4510"

4)第8行应如下所示:

<rect key="frame" x="0.0" y="0.0" width="320" height="480"/>

将其更改为

<rect key="frame" x="0.0" y="64" width="768" height="960"/>

就是这样,你有iPad XIB。但真正归功于Jag。

答案 11 :(得分:2)

我将记录我在Xcode 4.5中所做的事情:

  1. fixpattern.sh

    cp REPLACEME_Iphone.h REPLACEME_Ipad.h
    sed -e 's/REPLACEME_Iphone/REPLACEME_Ipad/g' REPLACEME_Ipad.h > REPLACEME_Ipad_tmp.h
    mv REPLACEME_Ipad_tmp.h REPLACEME_Ipad.h
    cp REPLACEME_Iphone.m REPLACEME_Ipad.m
    sed -e 's/REPLACEME_Iphone/REPLACEME_Ipad/g' REPLACEME_Ipad.m > REPLACEME_Ipad_tmp.m
    mv REPLACEME_Ipad_tmp.m REPLACEME_Ipad.m
    cp REPLACEME_Iphone.xib REPLACEME_Ipad.xib
    sed -e 's/com.apple.InterfaceBuilder3.CocoaTouch.XIB   /com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB/g' REPLACEME_Ipad.xib > REPLACEME_Ipad_tmp.xib
    mv REPLACEME_Ipad_tmp.xib REPLACEME_Ipad.xib
    sed -e 's/IBCocoaTouchFramework/IBIPadFramework/g' REPLACEME_Ipad.xib > REPLACEME_Ipad_tmp.xib
    mv REPLACEME_Ipad_tmp.xib REPLACEME_Ipad.xib
    sed -e 's/320, 416/768, 1004/g' REPLACEME_Ipad.xib > REPLACEME_Ipad_tmp.xib
    mv REPLACEME_Ipad_tmp.xib REPLACEME_Ipad.xib
    sed -e 's/REPLACEME_Iphone/REPLACEME_Ipad/g' REPLACEME_Ipad.xib > REPLACEME_Ipad_tmp.xib
    mv REPLACEME_Ipad_tmp.xib REPLACEME_Ipad.xib
    
  2. fixfile中创建要转换的文件列表,每行都是没有扩展名的文件名。如果原始文件名为AAA_Iphone.h,则只需添加AAA。如果您的原始文件不是此模式,则需要修改脚本。

  3. 在命令行中运行

    cat fixfile | while read line ; do sed -e "s/REPLACEME/${line}/g" fixpattern.sh ; done > fixall.sh
    
  4. 查看并运行fixall.sh

  5. 将新创建的文件添加到项目中

答案 12 :(得分:1)

除了Jag给出的答案还搜索“320,460”并将其替换为768,1024,您的XIB将调整为iPad尺寸。

答案 13 :(得分:1)

对于Xcode 4,

您无需为每个设备创建单独的目标。相反,您可以将项目摘要中的设备更改为已经在iPhone中的Universal。这可以在Xcode 4.2上将iOS 5 App更新为Universal的链接中找到。因此,它会为你做过渡。

答案 14 :(得分:0)

Jag has given Great Answer.

在某些情况下。

  

无需在Ipad XIB中转换您的Iphone XIB。您可以使用Autoresizingmask   并获得运行Ipad。只需要配置你的APP运行   在通用模式下使用适当的自动调整掩码。

答案 15 :(得分:0)

听起来最好的解决方案是始终先开发iphone,然后在完成后,添加ipad目标,让xcode进行更新。我犯了同样的错误,选择了通用启动,它创建了前几个文件,但是其他每个xib都必须在ipad文件夹中手动重新创建。大痛苦

答案 16 :(得分:0)

只需更换

<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14854.2" targetRuntime="iOS.CocoaTouch"

使用

<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="14854.2" targetRuntime="iOS.CocoaTouch.iPad"