我有一个iPhone
带有情节提要的应用程序。现在,我也想提供一个iPad
应用程序。所以我问我是否有一个功能可以帮助我将iPhone
情节提要转换为iPad
情节提要。
再具体一点:
有类似的功能还是只有手动方式?
我有一个iPhone
带有情节提要的应用程序。现在,我也想提供一个iPad
应用程序。所以我问我是否有一个功能可以帮助我将iPhone
情节提要转换为iPad
情节提要。
再具体一点:
有类似的功能还是只有手动方式?
Answers:
我发现了一种解决方案:
复制您的iPhone-Storyboard并将其重命名 MainStoryboard_iPad.storyboard
关闭Xcode,然后使用任何文本编辑器打开此文件。
搜索targetRuntime="iOS.CocoaTouch"
并将其更改为targetRuntime="iOS.CocoaTouch.iPad"
从以下位置更改MainStoryboard_iPad.storyboard中的代码:
<simulatedScreenMetrics key="destination" type="retina4"/>
至
<simulatedScreenMetrics key="destination"/>
现在保存所有内容并重新打开Xcode。iPad-Storyboard的内容与iPhone文件相同,但所有内容都可能乱七八糟。
这为我节省了时间-希望这会对您有所帮助
start a bounty
问题下,选择所需的金额和Reward existing answer
...
<simulatedScreenMetrics key="destination" type="retina4"/>
更改为<simulatedScreenMetrics key="destination"/>
如果您创建了一个通用项目,则默认情况下将创建空的iPad故事板,只需选择iPhone故事板,然后全选(Command + A),复制(Command + C)并将其粘贴到iPad故事板上。编译之前,请确保将入口点从空的故事板移至新复制的故事板。
那对我来说不是很有效。我做了一些不同的事情。
<scenes> <!--Contents View Controller-->
</class> </classes>
那对我有用。我连接了所有插座,得到了一个新的布局,仅此一项就节省了我几个小时。
.storyboard
文件,然后单击Open As > Source Code
以查看原始XML。
通过阅读许多关于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.您可能还需要更改约束。那就是您所做的全部。
1. Create New Storyboard file with MainStoryboard_iPad.storyboard
2. Copy All the views from MainStoryboard and paste to MainStoryboard_iPad.storyboard
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文件
这是另一回事,但是我可以选择全部并复制到我的iPad情节提要中(〜35个场景)并将其粘贴到我的iPhone情节提要中。场景大小已自动调整。我只看到两个问题,我不得不替换UISplitViewController(因为它只有iPad),并且默认背景变为透明而不是灰色(仍然可以正确地进行修复,而无需手动设置所有背景)。
编辑:似乎在属性检查器中的UITableView的默认背景是相当奇怪。对于分组的表格视图,我必须手动将背景设置为“分组表格视图背景色”,对于非分组的表格视图,则必须手动设置为“白色”。然后将其显示为“默认”(我认为是因为它随后与硬编码值匹配)。-实际上,甚至更容易,从“分组”更改为“静态”,然后再返回似乎可以重置默认颜色。
这为我节省了时间,并且可能会帮助您那些拥有Python技能的人。
在过去的两个月中,我一直在开发一个应用程序,专注于与团队一起迭代UX的iPad。
今天,我们专注于构建iPhone版本,遵循上述步骤(谢谢!),但是我不想在可视情节提要编辑器中调整iPad尺寸中的所有ui元素的大小。
因此,我编写了这个小python跳汰脚本来扫描情节提要文件中的x,y,宽度,高度,并按320./768的比例缩小所有内容。然后让我只专注于微调。
将您的iPad故事板复制到新文件中。(例如,iPhoneStoryboard.storyboard)
使用复制的故事板文件名作为第一个参数运行以下脚本。
将生成带有后缀_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()
使用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设备上运行。
现在已内置此功能。例如,如果将“部署信息->设备”中的项目设置从iPhone更改为“通用”,则会显示以下对话框:
昨天遇到相同问题时,我遵循了这个主题。我遵循的步骤
targetRuntime="iOS.CocoaTouch"
为targetRuntime="iOS.CocoaTouch.iPad"
<simulatedScreenMetrics key="destination" type="retina4"/>
为<simulatedScreenMetrics key="destination"/>
就是这样..谢谢大家的帮助..
在iPad故事板中添加带有导航控制器的空视图控制器
将类更改为您的第一个用于iPhone的ViewController的类“ fooViewController”
在iPhone故事板“ fooViewController_storyboard_identifier”中为第一个ViewController添加Storyboard-Identifier。
转到“ fooViewController.m”
添加布尔变量布尔 nibWasLoadForIpad=false
转到- viewDidLoad
方法
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。知道的问题是视图背景将设置为白色)