0

我有一个视图容器,仅显示 1 个带电话的屏幕和 2 个带标签的屏幕。所以,在 ViewDidLoad() 中,我使用了一个方法

 func addListController(){
    self.addChildViewController(listController!)
    listController?.view.frame = defineListSize()
    self.containerView.addSubview((listController?.view)!)
    listController?.didMove(toParentViewController: self)
}

其中defineListSize方法确定第一个孩子的大小

 func defineListSize() -> CGRect {
    var rect :CGRect = CGRect(x: 0, y: 0, width: self.containerView.frame.size.width, height: self.containerView.frame.size.height)

    switch (deviceIdiom) {
    case .tv:
        rect = CGRect(x: 0, y: 0, width: self.containerView.frame.size.width/2, height: self.containerView.frame.size.height)
    case .pad:
        rect = CGRect(x: 0, y: 0, width: self.containerView.frame.size.width/2, height: self.containerView.frame.size.height)
    case .phone:
        rect = CGRect(x: 0, y: 0, width: self.containerView.frame.size.width, height: self.containerView.frame.size.height)
    case .unspecified: break
    default: break
    }

    return rect
}

但是,当在平板电脑上添加第一个孩子时,它总是比容器视图的一半宽。虽然,在调试中,我可以看到 rect 有很好的数据。我尝试在 viewWillAppear 或 viewWillLayoutSubviews() 中使用 addListController(),但结果相同。第二个子视图,当添加到右侧时,具有良好的尺寸,并剪切了第一个子视图的右侧部分。

那么问题出在哪里?谢谢

4

0 回答 0