IB中的“自由形式”大小 - 故事板

时间:2014-04-25 10:30:59

标签: ios storyboard interface-builder xib

我有一个小问题。 据我了解并尝试过,如果我在故事板中更改ViewController的模拟大小,它仍然会将其主“视图”属性拉伸到整个屏幕。

所以我的问题是我何时以及为什么要更改这个“Freeform”属性? 每当我需要制作一些叠加时,我只是让主视图“透明”并在我的内容上创建另一个视图,然后我呈现它我作为一个容器。 我认为没有必要,而且我在Apple文档中找不到任何关于它的内容。

谢谢。

3 个答案:

答案 0 :(得分:3)

此属性仅适用于模拟不同的尺寸 ViewControllers并不总是必须是全屏容器,例如View Controller containment,或者新的iOS 7视图控制器transitions可能会导致视图控制器的大小覆盖屏幕的某个部分区域。
您可以使用“自由形式”模式更改界面构建器中的大小,这样您就可以模拟最终大小。

答案 1 :(得分:0)

你并没有走上正轨。如果使用Freeform作为视图控制器的大小,则可以指定所需的控制器大小。

使用控制器,如何设置springs & strutslayout constraints也非常重要。如果您设置弹簧或约束以将控制器的视图拉伸到"匹配"父级大小然后视图将被拉伸,如果不是它将保持您提到的大小但不是在所有情况下。例如,如果您以模态方式呈现视图控制器并在IB中指定不同的explicit size,则视图将具有此大小。

通常,当您将视图控制器作为子项添加到另一个视图控制器时,您会使用freeform属性,并且您确实希望具有该固定大小。

如果按下视图控制器或将其显示为模态视图控制器(并使用模态演示样式),则无需使用freeform

freeform属性的另一个用途是在使用现有的演示样式呈现为模态视图控制器时预览视图控制器的实际大小。

我之前看到的关于视图控制器视图大小的另一个错误实现是检查viewDidLoad中的大小。请务必检查viewWillAppear|| viewDidAppear中的尺寸。

答案 2 :(得分:0)

这在Q UIViewController Freeform size issue中得到了解答:取消选中"从NIB调整视图"在View Controller的属性检查器中,您的自由形式视图控制器视图的确会按照您在故事板中设计的大小进行解码。