我有一个iPhone应用程序,它有一个故事板。 现在我也想提供一个iPad应用程序。 所以我问我是否有一个功能可以帮助我将我的iPhone故事板转换为iPad故事板。

再具体一点:

是否有类似的功能或只有手动方式?

===============>>#1 票数:536 已采纳

我找到了一种解决方案:

  1. 复制您的iPhone-Storyboard并将其重命名为MainStoryboard_iPad.storyboard

  2. 关闭Xcode然后打开该文件任何文本编辑器。

  3. 搜索targetRuntime="iOS.CocoaTouch"并将其更改为targetRuntime="iOS.CocoaTouch.iPad"

  4. 更改MainStoryboard_iPad.storyboard中的代码:

    <simulatedScreenMetrics key="destination" type="retina4"/> to

    <simulatedScreenMetrics key="destination"/>

  5. 现在保存所有内容并重新打开Xcode。 iPad-Storyboard与iPhone文件具有相同的内容,但每个人都可能被排除在外。

这节省了我的时间 - 希望这会对你有所帮助

===============>>#2 票数:61

如果您已经创建了一个通用项目,默认情况下会创建空的iPad故事板,您只需选择iPhone故事板选择全部(Command + A),复制(Command + C)并将其粘贴到iPad故事板上。 确保在编译之前将入口点从空故事板移动到新复制的故事板。

===============>>#3 票数:10

这对我来说不太合适。 我做了一些不同的事情。

  1. 为iPad版本创建一个新的故事板文件
  2. 打开新文件和我要在textwrangler中复制的文件(文本编辑器)
  3. 将旧文件中的xml文本复制到这些xml标记之间的新文件中
  4. 第一个标签<scenes> <!--Contents View Controller-->
  5. 粘贴在这里
  6. 结束标签</class> </classes>

这对我有用。 我得到了一个新的布局,我的所有插座都已连接,仅此一个小时就节省了我的时间。

===============>>#4 票数:8

1. Create New Storyboard file with MainStoryboard_iPad.storyboard
2. Copy All the views from MainStoryboard and paste to MainStoryboard_iPad.storyboard

===============>>#5 票数:8

通过读取stackoverflow上的许多线程,我发现解决方案是 -

1.复制您的iPhone-Storyboard并将其重命名为MainStoryboard_iPad.storyboard

2.右键单击故事板 - >“打开” - >“源代码”。

3.搜索targetRuntime =“iOS.CocoaTouch”并将其更改为targetRuntime =“iOS.CocoaTouch.iPad”

5.搜索<simulatedScreenMetrics key="destination" type="retina4"/>并将其更改为<simulatedScreenMetrics key="destination"/>

4.现在保存所有内容并右键单击MainStoryboard_iPad.storyboard“打开” - >“IOS StoryBoard”5。您可能还需要更改约束。 多数民众赞成你所做的一切。

===============>>#6 票数:6

1 - 创建"MainStoryboard_iPad.storyboard";

2 - 右键单击"MainStoryboard_iPhone.storyboard"和“打开为 - >源代码”。 复制一切;

3-右键单击"MainStoryboard_iPad.storyboard"和“打开为 - >源代码”。 粘贴一切。 现在搜索并更改:

  • targetRuntime="iOS.CocoaTouch" to targetRuntime="iOS.CocoaTouch.iPad"
  • type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" to type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.iPad.XIB"

4 - 保存。 现在重新打开但使用界面构建器。 您只需要重新安排。

此方法也可用于.xib文件

===============>>#7 票数:5

这是另一种方式,但我能够在我的iPad故事板(约35个场景)中选择所有并复制并将其粘贴到我的iPhone故事板中。 场景大小自动调整。 我只看到了两个问题,我不得不更换UISplitViewController(因为它只是iPad),默认背景变为透明而不是灰色(仍在正确修复,无需手动设置所有背景)。

编辑:似乎属性检查器中UITableView的默认背景是相当奇怪的。 我必须手动将背景设置为分组表视图的“组表视图背景颜色”,并为非分组表视图设置“白色颜色”。 然后它显示为“默认”(我假设它然后匹配硬编码值)。 - 实际上,更简单,从“Grouped”更改为“Static”并返回似乎重置默认颜色。

===============>>#8 票数:4

这里有些节省了我的时间,可能会帮助那些有Python技能的人。

我在过去的两个月里一直在构建一个应用程序,专注于iPad与团队一起迭代UX。

今天专注于构建iPhone版本,按照上面的步骤(谢谢!)但我不想在视觉故事板编辑器中调整iPad尺寸的所有ui元素。

所以我写了这个小的python jig脚本来扫描storyboard文件中的x,y,width,height并按比例缩放320./768。 那么请允许我专注于精细调整。

  1. 将iPad故事板复制到新文件中。 (例如iPhoneStoryboard.storyboard)

  2. 运行下面的脚本,将复制的storyboard文件名作为第一个参数。

  3. 将生成带后缀_adjusted.storyboard的输出文件(例如iPhoneStoryboard.storyboard_adjusted.storyboard)

希望能帮助到你...

import re
import sys
import math

afile = sys.argv[1]

scale = 320./768.

number_pattern = '[-0-9]+(.[0-9]+)?'
#width_pattern = 'width="[-0-9]+( ?px)?"'
width_pattern = 'width="[-0-9]+(.[0-9]+)?( ?px)?"'
height_pattern = 'height="[-0-9]+(.[0-9]+)?( ?px)?"'
x_pattern = 'x="[-0-9]+(.[0-9]+)?( ?px)?"'
y_pattern = 'y="[-0-9]+(.[0-9]+)?( ?px)?"'


def replacescaledvalue(scale,pattern,sometext,replacefmt) :
    ip = re.search(pattern, sometext, re.IGNORECASE)
    if(ip) :
        np = re.search(number_pattern,ip.group(0))
        if(np) :
            val = float(np.group(0))
            val = int(math.floor(val*scale))
            sval = replacefmt+str(val)+'"'#+'px"'
            newtext = re.sub(pattern,sval,sometext)
            return newtext
    else :
        return sometext

fin = open(afile)
fout = open(afile+"_adjusted.storyboard", "wt")
for line in fin:
    newline = line
    newline = replacescaledvalue(scale,width_pattern,newline,'width="')
    newline = replacescaledvalue(scale,height_pattern,newline, 'height="')
    newline = replacescaledvalue(scale,x_pattern,newline, 'x="')
    newline = replacescaledvalue(scale,y_pattern,newline, 'y="')
#   print newline
    fout.write( newline )

fin.close()
fout.close()

===============>>#9 票数:3

转到目标摘要并将设备更改为通用,然后向下并将ipad版本设置为您喜欢的任何故事板,包括复制和重命名的故事板(如果您愿意)。

===============>>#10 票数:3

正如对那些可能遇到我的问题的人的快速记录:

我的问题:

故事板内容很好地复制到我添加的新板文件中。 但是,它不会对我配置的iPad进行更改。 注意到我必须切换构建目标的指定故事板(参见图像),让更改显示。

如果我有积分,我会发布图片,但设置位于:

左侧源菜单上的项目导航器,项目的根目标(中心窗格)常规选项卡,(第二个子标题)部署信息,选择了iPad按钮选项卡。

从那里,选择“主界面”下的故事板。

谢谢你的帖子,我希望这个提到有助于在某个地方找到障碍。

===============>>#11 票数:3

只是为了好玩,在XCode 5.1和iOS 7.1上我还需要将“toolVersion”和“systemVersion”的值更改为:

toolsVersion="5023" systemVersion="13A603"

如果没有这个,新的故事板文件将无法编译

===============>>#12 票数:3

使用XCode6大小类,您不再需要将故事板转换为iPad。 同样的故事板可用于iPhone和iPad,使您无法保持两个文件的最新状态。

生成的故事板与iOS7 +兼容。

在此处阅读更多相关信息: https//developer.apple.com/library/ios/recipes/xcode_help-IB_adaptive_sizes/chapters/AboutAdaptiveSizeDesign.html#//apple_ref/doc/uid/TP40014436-CH6-SW1

使用大小类可以使故事板或xib文件与所有可用的屏幕大小一起使用。 这使您的应用程序的用户界面可以在任何iOS设备上运行。

===============>>#13 票数:2

此功能现在是内置的。 例如,如果将部署信息 - >设备中的项目设置从iPhone更改为通用,则会显示以下对话框:

在此输入图像描述

===============>>#14 票数:2

我昨天遇到同样问题的时候跟着这个帖子。 我遵循的步骤

  1. 对于Xcode 5.1,我必须对iPhone故事板进行一些清理,例如缺少表格单元的reuseIdentifier,为每个控制器提供故事板ID,删除未使用的场景。
  2. 将MainStoryboard_iPhone.storyboard复制到MainStoryboard_iPad.storyboard。
  3. 使用vi编辑器 - 将targetRuntime="iOS.CocoaTouch"更改为targetRuntime="iOS.CocoaTouch.iPad"
  4. MainStoryboard_iPad.storyboard中的代码从: <simulatedScreenMetrics key="destination" type="retina4"/>更改为<simulatedScreenMetrics key="destination"/>
  5. 在Xcode中打开项目。
  6. 将部署设备更改为通用 - 选择不复制iPhone故事板的选项。
  7. Xcode会将部署目标默认为7.1,处理已弃用的功能。
  8. 修复iPad故事板中错误放置的视图错误 - 更改控制器的框架布局给出错误。

就是这样..感谢所有人的帮助..

===============>>#15 票数:2

对于Xcode10

  1. 只需复制Main.storyboard

  2. 然后将文件重命名为Main_iPad.storyboardMain_iPone.storyboard

  3. .plist设置适当的名称

在此输入图像描述

4.只需选择要配置的正确.storyboard 在此输入图像描述

===============>>#16 票数:1

最简单,最可靠的方法是从iPad故事板中复制粘贴。

  1. 创建一个新的故事板并将其命名为MainStoryboard_ipad。
  2. 通过在项目的Target属性的Summary页面上将Devices属性设置为Universal,使您的应用成为Universal应用。 在此输入图像描述
  3. 打开iPhone故事板并选择全部并复制
  4. 打开iPad故事板并粘贴。

您将不得不进行大小调整,但它可能比重新创建整个故事板更快。

===============>>#17 票数:1

一种不同的方法

  1. 在iPad-Storyboard中添加带有Navigation-Controller的空视图控制器

  2. 将Class更改为用于iPhone的第一个ViewController的类,“fooViewController”

  3. 为第一个ViewController在iPhone-Storyboard“fooViewController_storyboard_identifier”中添加Storyboard-Identifier

  4. 转到“fooViewController.m”

  5. 添加bool变量bool nibWasLoadForIpad=false

  6. 转到viewDidLoad -Method

 if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && !nibWasLoadForIpad) { nibWasLoadForIpad=true; UIStoryboard* Storyboard_iphone=[UIStoryboard storyboardWithName:@"Main_iPhone" bundle: nil]; fooViewController *controller = [Storyboard_iphone instantiateViewControllerWithIdentifier:@"fooViewController_storyboard_identifier"]; [self.navigationController pushViewController:controller animated:YES]; self.modalPresentationStyle = UIModalPresentationCurrentContext; } 

(ps。知道问题是视图背景将设置为白色)

===============>>#18 票数:1

对于支持大小类的Xcode版本,有一个非常简单的解决方案(在Xcode 7中测试,这是编写本文时的当前版本)。 检查故事板文件( 文件检查器 )上的“使用大小类”复选框,确认出现的对话框。 然后取消选中相同的复选框 - Xcode将询问您是否要将此故事板与iPhone或iPad一起使用,并适当地转换其中的屏幕。 无需直接编辑故事板文件 对于iPad和iPhone,只需复制相同的故事板,并使用所述方法为iPad配置一个,为iPhone配置一个。

在有人建议使用大小类之前 - 虽然很好,但它们对于大量定制的UI(例如游戏等)来说不太方便

===============>>#19 票数:0

您应该使用Apple创建错误报告。 您可以说这是我的重复(10167030),自2011年9月开始营业。从我的角度来看令人沮丧的是Xcode 3中存在的功能......

===============>>#20 票数:0

谢谢大家的答案。

我按照上面的步骤操作,但是当我在模拟器或iPad下运行应用程序时,它只使用iPhone故事板。

出于某种原因,当我将目标设备更改为Universal而不是iPhone时,Xcode(v5.0)没有更新app-Info.plist文件以包含iPad故事板,因此我不得不手动添加以下条目(使用Xcode中的plist编辑器:

主故事板文件基名(iPad)==> MainStoryboard_iPad

===============>>#21 票数:0

我只是改变了(除了来自@tharkay的回答):

 <device id="ipad9_7" orientation="landscape">

而且效果很好!

我在XCode 8.3.3中使用它

  ask by dehlen translate from so

未解决问题?本站智能推荐:

关注微信公众号