ios - 如何自动调整 ViewController Root View 的大小以适应其内容?

标签 ios uiview uiviewcontroller ios-autolayout

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

  • 创建一个新的 XIB 文件:
  • 向 Root View 添加一个新的 subview ,并为其指定固定的宽度和高度。
  • 向 subview 添加前导约束以定义 X 位置
  • 向 subview 添加顶部约束以定义 Y 位置
  • 向 subview 添加底部约束以定义内容高度(顶部 + subview 高度 + 底部)
  • 到目前为止一切都很好,因为顶部 + subview 高度 + 底部等于 Root View 的高度。
  • 如果顶部或底部约束设置为另一个值,我希望调整 Root View 的大小以匹配其内容。然而,IB却提示相互冲突的限制。

如何解决这个问题?

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

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

可以在 IB 中解决这个问题,而不需要操纵代码中的约束吗?

最佳答案

经过更多的尝试和错误,找到了一个可行的解决方案:干脆不要使用 Root View :-)

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

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

虽然这工作得很好,但是却很hacky。是否有任何不需要虚拟包装 View 的更干净的解决方案?

关于ios - 如何自动调整 ViewController Root View 的大小以适应其内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55529822/

相关文章:

iOS UIView过渡,不改变navigationbar

ios - UIView transitionFromView

cocoa-touch - +animateWithDuration :animations:completion: crashes under simulator

objective-c - 单击按钮时重置/重新初始化/重新启动 UIViewController View 的最简单(正确)方法是什么?

iphone - ViewController 的 NSMutableArray

ios - 点击取消下载

iphone - iOS 模拟器在启动时崩溃(间歇性),在设备上没有崩溃

iOS 自动布局 : How to show/hide a view including its margins?

ios - UIStoryboard popViewController

ios - 缺少依赖目标 "CordovaLib (from CordovaLib.xcodeproj)"