为什么子表视图的大小不正确?

问题描述

首先,请不要提出建议您将TableViewController删除为子视图的“聪明”解决方案。谢谢。

摘要

我正在以编程方式添加Tableviewcontroller,作为固定大小为216的视图的子视图。我一直在搞乱约束....并且使用View Hierachy Debugger,我看到TableView的高度始终为852 ...这基本上是屏幕的全部尺寸。如何正确调整TableView的大小使其包含视图?

enter image description here

下面是我试图用来约束事物的一堆代码……无济于事。谢谢。

import UIKit

class ViewController: UIViewController {
    
    @IBOutlet weak var xyz: UIView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let child = UITableViewController()
        xyz.addSubview(child.view)
        self.addChild(child)
        child.didMove(toParent: self)
        
        //child.view.translatesAutoresizingMaskIntoConstraints = false
        let safeArea = xyz.layoutMarginsGuide

        
        var height = child.view.heightAnchor.constraint(equalToConstant: 292)
        height = height.constraintWithMultiplier(2000)
        height.isActive = true
        
        
        child.view.topAnchor.constraint(equalTo: safeArea.topAnchor).isActive = true
        child.view.bottomAnchor.constraint(equalTo: safeArea.bottomAnchor).isActive = true
        
        child.view.leftAnchor.constraint(equalTo: safeArea.leftAnchor).isActive = true
        child.view.rightAnchor.constraint(equalTo: safeArea.rightAnchor).isActive = true
    }
    
}

extension NSLayoutConstraint {
    func constraintWithMultiplier(_ multiplier: CGFloat) -> NSLayoutConstraint {
        return NSLayoutConstraint(item: self.firstItem!,attribute: self.firstAttribute,relatedBy: self.relation,toItem: self.secondItem,attribute: self.secondAttribute,multiplier: multiplier,constant: self.constant)
    }
}

解决方法

取消注释此行代码

child.view.translatesAutoresizingMaskIntoConstraints = false

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...