75

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

4

17 回答 17

159

我能够将其缩小到几件事,所以以下是对我有用的步骤:

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

2)右键单击文件(在xcode中)并打开为>源代码

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) 保存文件并打开为 > Interface Builder - iOS

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

于 2011-10-18T20:38:49.047 回答
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添加到typeandtargetRuntime属性中。

打开后只需选择一个新的尺寸进行调整。示例:iPad 全屏。

于 2013-09-28T21:32:09.667 回答
29

假设您拥有带有 Xcode 3的 SDK ,

  1. 打开IB。
  2. 打开 XIB。
  3. 文件 -> 使用自动调整蒙版创建 iPad 版本。
于 2010-03-21T18:55:03.847 回答
22

XCode4:

在 xcode 4 中,我们不能为单个 xib 执行此操作,但我们可以一次创建相应的 ipad 版本。

在将您的项目配置到 ipad 之前,当它仅配置为 iphone 时,右键单击目标并单击复制。

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

希望能帮助到你。

于 2011-06-04T14:35:50.053 回答
14

Xcode 4

Create iPad Version Using Autosizing Masks功能已从 Xcode 4 中删除。现在最简单的方法是使用 Xcode 3 进行转换,因为 nib (.xib) 文件格式没有改变。

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

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

于 2011-04-03T23:54:58.297 回答
6

让计算机做计算机的工作怎么样?
速度更快,错误风险更小。

这是一个基于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
于 2012-10-05T07:02:58.577 回答
5

使用“作为源代码查看”在 XCode 4 中打开 XIB。

备份有问题的笔尖。

代替这个粘

    <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>

对于这个其他的粘

    <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 的 nib 中的每个视图,将其删除,然后单击撤消。

然后用热水淋浴,以消除您可能有的恶心感。

于 2011-07-04T17:56:34.503 回答
4

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

在 de navigator 中右键单击您的 XIB 文件并选择:“open as...” 作为源文件打开。

找到 UIView 参考并更改 Frame 值:

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

<string key="NSFrame">{{0, 20}, {768, 1024}}</string>
于 2011-05-30T20:04:36.690 回答
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

于 2012-04-27T06:45:53.553 回答
3

Xcode 5 更新

targetRuntime="iOS.CocoaTouch"

targetRuntime="iOS.CocoaTouch.iPad"

于 2014-05-01T08:30:34.213 回答
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. 将新创建的文件添加到项目中

于 2013-04-28T15:36:47.833 回答
2

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

对于 Xcode 5

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

2)右键单击文件(在xcode中)并打开为>源代码

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。

于 2013-11-01T06:27:19.947 回答
1

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

于 2012-09-18T07:44:51.107 回答
1

对于 Xcode 4,

您无需为每个设备创建单独的目标。相反,您可以将项目摘要中的设备更改为已经在 iPhone 中的 Universal。这在 Xcode 4.2 上将 iOS 5 应用程序更新到通用的链接中得到了回答。因此,它将为您进行过渡。

于 2013-04-05T09:09:39.153 回答
0

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

于 2011-09-24T14:02:59.490 回答
0
Jag has given Great Answer.

在某些情况下。

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

于 2013-03-01T12:26:18.437 回答
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"
于 2019-08-15T00:16:57.487 回答