我一直有类似的问题。从我目前发现的情况来看,我们可能需要删除可滚动视图中视图上的所有约束,因为它的内容似乎随着滚动视图的框架一起调整大小。我知道在 viewWillAppear 中手动设置内部视图的框架会起作用,但是你会被困在 iPhone4 和 iPhone5 大小相同的视图中(尽管它会滚动)。或者您可以在情节提要中“固定高度和固定宽度”的内部视图。
两种可能可行的方法。抱歉,我无法确认这些,因为我正在放弃并围绕这个问题重新设计。
1. 以编程方式向您的内部视图的子视图添加约束。编程约束将允许您按比例“弹出”元素之间的距离。以编程方式添加约束时,您可以访问一个称为“乘数”的因子(不要与优先级混淆),我在 stackoverflow 上看到其他人发布过这个因子。
2. 您可以将 Interface Builder 中的 internalView 设计为带有 .xib 文件的单独 viewController,然后使用 storyboard 将其作为嵌入式 viewController 加载到“containerView”对象,您将把它作为新的“内部视图” "的滚动视图。也许然后 .xib 会首先调整到正确的 iOS 设备,然后你可以使用它的框架来调整 containerView 的大小。
我的建议是在实施之前创建一个小型测试用例,否则你最终会像我一样,在错误的道路上花费数小时并面临死胡同。
更新 12/4/12 通过不将 ScrollView 设置为 ViewController 的主视图,让您的生活更轻松。--相反,使 ViewController.view 成为一个虚拟/空白视图,并在该视图中嵌入一个滚动视图。然后,在 ScrollView 中嵌入另一个视图(我的 CustomView)。CustomView 包含所有可见的控件和文本框和按钮。CustomView 上没有高度限制。