【问题标题】:How to resize ViewController root view automatically to fit its content?如何自动调整 ViewController 根视图的大小以适应其内容?
【发布时间】:2019-08-27 00:41:40
【问题描述】:

当创建一个新的UIViewController 时,相应的XIB 文件中的根视图可以设置为任何固定 高度。但是,根视图应该自动适应其内容。如何做到这一点?

  • 创建一个新的 XIB 文件:
  • 在根视图中添加一个新的子视图,并给它一些固定的宽度和高度。
  • 向子视图添加前导约束以定义 X 位置
  • 向子视图添加顶部约束以定义 Y 位置
  • 为子视图添加底部约束以定义内容高度 (top + subview height + bottom)
  • 到目前为止一切都很好,因为top + subview height + bottom 等于根视图的高度。
  • 如果顶部或底部约束设置为另一个值,我希望根视图调整大小以匹配其内容。然而,IB 却抱怨约束冲突。

如何解决?

当然,在大多数情况下,根视图的大小不是由其内容定义的,而是由屏幕、模式视图等定义的。ViewController 显示在其中。

但是,我想在另一个 ViewController 中将 ViewController 显示为 ScrollView 的内容。 在这种情况下,ContentViewController 应该与其内容匹配,并且 ScrollView 会确保完整内容是可访问的。

可以在 IB 内解决此问题,而无需操纵代码中的约束吗?

【问题讨论】:

标签: ios uiview uiviewcontroller ios-autolayout


【解决方案1】:

经过反复试验,找到了一个可行的解决方案:不要使用根视图 :-)

我在 XIB 文件的根级别添加了另一个视图并将根视图移到其中,使根视图成为新视图的子视图。只要 VC view 出口仍然指向根视图(不再处于根级别),就可以正常工作。

theViewController.view 仍然可以访问根视图。由于它没有放置在根级别,因此根据其内容调整大小是没有问题的。

虽然这可以正常工作,但它非常 hacky。有没有不需要虚拟包装视图的更清洁的解决方案?

【讨论】:

    猜你喜欢
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    相关资源
    最近更新 更多