如何以最佳方式添加滚动视图以优化为 4 英寸与 3.5 英寸兼容而设计的屏幕尺寸?

Posted

技术标签:

【中文标题】如何以最佳方式添加滚动视图以优化为 4 英寸与 3.5 英寸兼容而设计的屏幕尺寸?【英文标题】:How to add scrollview in a best way for optimize screen size designed for 4 inch compatible with 3.5 inch? 【发布时间】:2017-04-05 06:14:36 【问题描述】:

我在提交这个问题之前已经搜索了帖子。How to optimize screen size designed for 4 inch compatible with 3.5 inch

但是上面的帖子没有回答我的问题。

我们的设计师给我们发送了 4 英寸的设计 UI,我使用带有自动布局的 xib 来实现设计。并且经理告知我们需要支持3.5寸屏幕...

我们不想再创建一个xib来适配3.5寸的屏幕,只想给xib添加UIScrollView,有没有大佬有想法用这种方式实现,不需要修改我们的是否存在 xib 布局约束?

【问题讨论】:

你为什么不使用故事板呢?这很容易管理。 使用自动布局:developer.apple.com/library/content/documentation/… @Aashish1aug 谢谢你的回答,但是这个项目我们已经使用 xib 而不是故事板,对 xib 有什么建议吗? @Mrunal ,我们使用了自动布局,但是我们的设计是4英寸的,这意味着屏幕高度比3.5英寸高很多,所以我们需要添加滚动视图来使它可滚动。 好的,您是否尝试在您的 xib 的属性检查器中更改 Freefrom 的设置。当您使用 Autolayout 时,我认为它会稍作修正。 【参考方案1】:

试试这个方法。

从您的 xib 或情节提要场景中选择所有视图对象 在 Xcode 菜单 > 编辑器 > 嵌入 > 视图中 再次选择新添加的View(简称​​ContainerView) 使用 Xcode 菜单 > 编辑器 > 嵌入 > 滚动视图ContainerView 添加到 ScrollView 现在调整与 ContainerView 相关的最内部视图对象的所有约束 保持ContainerView高度正常,即使它超出屏幕高度 调整顶层 ScrollView 与屏幕边界相连的高度。 在代码库中,设置 ScrollView ContentSize = ContainerView.frame.size

参考:

所以你的视图层次应该是这样的:

Default Controller View (UIView)
    |- Scroll View (UIScrollView)
        |- Container View (UIView)
            |- Other ViewObjects like UILabel,
            |- UIButton,
            |- UIImageView, etc.

希望这会有所帮助。

【讨论】:

非常感谢,您的方法非常好,但是正如agent_stack 提到的那样,如果我们以这种方式更改所有xib 工作量很大,那么,您还有其他方法吗? ,比如添加一些代码来破解它? @MellongLau 如果您已经准备好用于 4 英寸设计的视图,那么您只需复制该视图,将其粘贴到滚动视图下并在代码中设置滚动视图的约束和内容大小。因为我猜您必须为该视图内的对象设置了所有约束和所有约束。但是,是的,如果您有多个 xib / 场景,那么您必须对所有这些重复这些步骤。 感谢您的帮助,如果这里没有更好的答案,我会收到您的答复。 @MellongLau 这是个好方法。完成后,您无需担心它始终在 iPhone 4s 到 iPhone 7+ 中运行的任何其他设备。是的,这需要一点时间。但你可以聪明地做到这一点。现在一切由你决定。你可以得到这个mine answer,它可以帮助你完成你的任务,但不要忘记嵌入 UIView 和 UIScrollView 如 Mrunal 所说。【参考方案2】:

只需将滚动视图添加为父视图并检查所有约束是否正确并且系统可以计算内容大小。

【讨论】:

添加滚动视图作为父视图将需要更新 xib 中的所有约束,我们有很多 xib...

以上是关于如何以最佳方式添加滚动视图以优化为 4 英寸与 3.5 英寸兼容而设计的屏幕尺寸?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Storyboard 的 Touch Bar 中添加滚动视图?

UIScrollView 在 4 英寸上工作,在 3.5 英寸上不响应任何触摸

4英寸屏幕上的自动布局

你能以编程方式修改 UICollectionView 滚动方向吗?

添加子视图并使用 AutoLayout 将前沿与超级视图对齐并包裹视图

如何以编程方式设置滚动视图高度