ios - 大小(forChildContentContainer 容器:UIContentContainer,withParentContainerSize parentSize:CGSize)不起作用
问题描述
苹果 说:
“容器视图控制器使用此方法返回其子视图控制器的大小。UIKit 调用该方法作为视图控制器的 viewWillTransition(to:with:) 方法的默认实现的一部分”
当我第一次启动程序时:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let child = ViewControllerChild()
self.addChildViewController(child)
self.view.addSubview(child.view)
child.view.translatesAutoresizingMaskIntoConstraints = true
child.view.autoresizingMask = [.flexibleBottomMargin, .flexibleRightMargin]
}
override func size(forChildContentContainer container: UIContentContainer, withParentContainerSize parentSize: CGSize) -> CGSize {
return CGSize(width: 100, height: 100)
}
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
}
我得到完整的父 vc 视图的大小子视图控制器的视图不是 (100, 100)。那么重写它的真正意义是什么,如果我可以通过在(viewdidload 中的第一次加载)然后在preferredContentSizeDidChange 函数中重新定义子vc 视图的框架来响应特征变化?
解决方案
根据您在问题中的说明:
UIKit 调用该方法作为视图控制器的 viewWillTransition(to:with:) 方法的默认实现的一部分
问题:您确定正在调用重写的方法吗?
少了什么东西?
let child = ViewControllerChild()
self.addChild(child)
/// Add this line
child.didMove(toParent: self)
self.view.addSubview(child.view)
如果您正在实现自己的容器视图控制器,它必须在转换到新控制器后调用子视图控制器的 didMove(toParent:) 方法,或者,如果没有转换,则在调用 addChild(_: ) 方法。
推荐阅读
- python - 将两个字典与子字典结合并更新值?
- python - ValueError:调用层“sequential_5”时遇到异常(类型Sequential)
- osgi - 将 AEM 6.5.1 升级到 6.5.10 时缺少依赖项
- dataweave - 什么是匹配 dataweave 中 URL 的好正则表达式?
- android - 如何在 Play 管理中心将应用版本从生产移动到内部测试?
- javascript - 为 React Native 创建 NPM 包时如何解决 iOS 中出现的问题?
- javascript - 需要在一个一个点击的时候打印一个数字
- c++ - C++ SafeSingleton 3 级继承
- jestjs - 如何在 Jest 的方法中模拟嵌套实例方法?
- view - 如果我的视图按钮被visualforce页面覆盖,如何配置案例提要