Xcode 6 Storyboard大小错误?


139

使用Xcode 6(测试版1)在Swift中从头开始构建了一个新项目,并且看到了Storyboard和我正在查看的输出的一些奇怪行为。

我建立了一个简单的界面(如下所示)-包含View Controller的属性。当我在模拟器中运行此程序时,我希望“ Hello,World”在用户界面中处于中心位置-但是,似乎该“ Square”仅适合iPhone屏幕,因此显示了错误的视图(请参阅下文) )。

我的问题是:是否有其他人看到过这种行为,他们如何解决?

谢谢!

情节提要编辑器中的视图

属性检查器

尺寸检查器

模拟器输出


添加自动布局约束,应该可以解决该问题。您当前正在为所有布局进行设计,因此自动布局将帮助您在“正确的”位置显示内容。
拉兹2014年

8
提示:使用助手编辑器>自动>预览,您将能够看到所有屏幕尺寸的屏幕预览
Francescu

Answers:


81

虽然Asif Bilal的答案是一个不涉及Size Classs的简单解决方案(iOS 8中引入了它),但强烈建议您习惯于对class进行尺寸调整,因为它们是未来的选择,无论如何,您最终还是会加入其中的点。”


您可能尚未添加布局约束。

选择标签,点击底部的布局约束按钮:

在此处输入图片说明

在该菜单上,通过选中其宽度和高度(不应与我的相同),然后单击添加约束。然后,按住Control并将标签拖动到主视图,然后单击鼠标右键时,应该具有在容器中水平居中和垂直居中的选项。两者都添加,您应该被设置。


1
很棒-对我来说很棒-谢谢您的帮助(取消计时器后,您会接受您的回答)
Candyfloss

1
别客气。这是自动布局的默认行为,默认情况下已启用。请记住,由于屏幕尺寸/布局可能不同,应该有一种方法可以计算视图相对于其父视图的位置,并且自动布局可以解决此问题。如果不添加这些约束,则视图会在运行时自动创建,但相对于左上角。如果您还需要其他(几乎总是需要其他),则需要明确指定约束。
CanPoyrazoğlu2014年

4
请注意,无需拖动控件(可能会很尴尬)。在此图像中选择的一个按钮的左侧的按钮将打开一个菜单,您可以使用该菜单固定水平和垂直中心。
jrturton

您是对的。.我只是习惯控制拖动,所以我才这样说。
CanPoyrazoğlu2014年

@CanPoyrazoğlu-您提到“选择标签”。什么标签?我在没有标签或其他UI元素的新iPhone项目中遇到了同样的问题。我在Xcode 6的第一个项目,使用Objective C.
rattletrap99

253

请执行以下步骤解决问题

在情节提要中,选择任何视图,然后转到“文件”检查器。取消选中“使用尺寸分类”,您将要求保留以下尺寸分类数据:iPhone / iPad。然后单击“禁用尺寸类别”按钮。这样做将使选定设备的情节提要的视图大小变大。


8
例如,当您要使用标准iPhone尺寸的视图控制器时,如果要获得600x600的视图控制器,这是正确的答案。
Fraggle 2014年

5
这应该是正确的答案(至少对于那些仅适用于非通用平台的人)
Raptor 2014年

36
我不知道为什么人们会将此标记为正确的答案...第一个是应该这样做的方法...如果您不喜欢布局约束而不是反方向...苹果正在利用一个适用于所有尺寸的iPhone和iPad的好方法,而您只是想回到旧的东西?因为您负担不起更新自己的费用?永不拒绝投票,但此答案似乎使人感到困惑,并使其使用旧方法(将不赞成使用),而不是鼓励然后使用新方法……
Raphael Ayres 2014年

3
每个习惯iPhone / iPad故事板的人的最佳答案
mamarx 2014年

3
使用布局约束... Apple以与Android工作相同的方式执行此操作。该视图无格式...有时可能会很痛苦,但是如果您强制设置大小,则在不同设备尺寸下,您的应用程序看起来会很糟糕。如果要在右下角显示一个按钮,只需为其创建2个约束,并禁止...没有选择X或Y。全部将由引擎设置。使用固有尺寸。动用你的想象力。使用关系约束。学习这个s ***。
拉斐尔·艾尔斯

18

如果您使用Xcode 6并为iOS 8设计,那么这些解决方案都不正确。要正确确定仅iPhone的视图的大小,请不要关闭大小类,不要关闭推断的指标,也不要设置约束。而是使用size类控件,该控件是Interface Builder底部的一个容易错过的文本按钮,该按钮最初显示为“ wAny hAny”。

单击按钮,然后选择紧凑宽度,常规高度。这将调整您的视图大小并覆盖所有iPhone纵向。苹果的文档在这里:https : //developer.apple.com/library/ios/recipes/xcode_help-IB_adaptive_sizes/chapters/SelectingASizeClass.html或搜索“在Interface Builder中选择尺寸类别”


我认为通读链接中的整个Size Classs设计帮助很有用,例如,从About About Designing for Multiple Size Classs在早期iOS版本上部署具有Size类的应用程序
富兰克林于

如果要保留自动布局,但希望情节提要视图显示为横向或纵向而不是正方形,则这是一个很好的解决方案。
stephenspann

5

在情节提要中,选择ViewController并转到Atribute Inspector。在顶部,在“模拟度量”下,您具有“大小”和“方向”属性,这些属性设置为“推断”。将它们更改为所需的值。

为了使应用程序在其他屏幕尺寸上正确显示,您还必须设置约束,如CanPoyrazoğlu在第一篇文章中所述。


5

我在xcode 6中遇到了这个问题,并且有一种方法可以解决调整大小的冲突。如果选择视图,则在底部将看到一个类似于|-Δ-|的图标。如果单击它,则您的项目将针对不同的设备调整大小。


是的,选择了三角形符号后,单击添加缺失的约束并增加臂
杆,

3

转到“属性”检查器(位于右上角),在“模拟度量”中,该属性具有“大小”,“方向”,“状态栏”,“顶部栏”,“底部栏”属性。对于SIZE,更改推断--自由格式。


+1 @Rachel感谢您提供有关模拟度量->大小的有用小技巧:“自由格式”(又名“为自定义视图支持的可重用xib启用自定义大小”)。
cweekly 2015年

3

在情节提要页面上,转到“文件检查器”,然后取消选中“使用大小类”。这会将您的视图控制器缩小到您熟悉的常规iPhone大小。请注意,使用“大小类”将使您可以跨许多设备设计项目。取消选中此选项后,Xcode将为您提供警告对话框,如下所示。这应该是不言自明的。

“禁用大小级别将限制此文档只能存储单个设备系列的数据。将保留最能代表目标设备的大小级别的数据,并将删除所有其他数据。此外,segues将转换为非设备类型自适应等效项。”


3

对于使用XCode 7的任何人来说,针对特定设备尺寸(而不是默认的方形画布)进行设计都是非常容易的。

在Interface Builder中,从左侧菜单中选择ViewController或Scene。然后,在下Show the Attributes Inspector,转到Simulated Metrics,然后Size从下拉菜单中选择所需的对象。


那只会让您在情节提要中为该设备进行设计。当您运行应用程序时,其设计可能会因屏幕尺寸的不同而有很大差异。
乔伊·塔瓦德鲁斯

@JoeyTawadrous确实如此。但是它回答了所问的问题:)
牧师

2

您可能应该使用“解决自动布局问题”(在情节提要视图中右下角-三角形图标)向建议的约束中添加/重置(Xcode 6.0.1)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.