ios - iOS 自动调整大小的容器视图
问题描述
我正在构建一个具有多个屏幕的 iOS 应用程序,但我希望避免重复代码以及一个大型故事板。理想情况下,我想在需要时根据我的内容视图中的选定故事板加载各种视图控制器。
屏幕模板(Master/Root View)由3个View组成,即:
- 充当导航视图的视图 A ,
- 视图 B应根据用户操作加载各种视图控制器,并且,
- View C,很像一个标签栏或第三个视图,我可以在其中显示一些
环境信息。
现在,我当然可以使用传统的 UINavigationController 和 UITabBar,但我需要更好地控制这些视图,特别是在大小方面(它们的最小高度大于 NavBar 和 TabBar 的高度)。
我还需要根据 Traits 和 Class Size 调整这些视图的大小,以保持填满整个屏幕。
我正在尝试使用容器视图来这样做,但是尽管在自动布局中尝试了一组不同的约束,但我无法让它们自动调整大小。将 3 个视图放在一个堆栈视图中也不起作用。
最终,我希望能够在将加载到View B中的各种控制器视图上单独工作,使用它们自己的故事板,在 B 中以编程方式调用它们并自动调整所有内容的大小。
感谢大家的友好和宝贵意见!克里斯
解决方案
使用addChildViewController(childVC)
/ addChild(childVC)
( Swift 4.1 / 4.2 ) 时,myContainerView.addSubview(childVC.view)
您需要
- 为添加的子视图添加约束
或者
- 设置子视图的框架和
.autoResizingMask
之后,您新添加的子视图将正确布局和调整大小。
推荐阅读
- python - 在python中添加/相乘两个浮点标量数的最快方法
- report - 詹金斯 - 无法在 html 报告中查看图像
- javascript - 找不到图片路径位置?
- database - 我应该创建一个引用字段还是第三种内容类型来表示 Drupal 8 中的多对多关系?
- java - 如何正确暂停应用程序,直到权限请求完成?
- java - DynamoDB 分页
- android-room - Room 数据库实体中的默认值或 NULL
- image - 我想批量提取 gps 数据(exif)然后转换为地址并将该文本保存为 jpg
- android - 如何使 App 设备特定(设备/帐户锁定)?
- ios - 如何快速从我的应用程序中打开另一个应用程序