问题描述
首先,请不要提出建议您将TableViewController删除为子视图的“聪明”解决方案。谢谢。
摘要
我正在以编程方式添加Tableviewcontroller,作为固定大小为216的视图的子视图。我一直在搞乱约束....并且使用View Hierachy Debugger,我看到TableView的高度始终为852 ...这基本上是屏幕的全部尺寸。如何正确调整TableView的大小使其包含视图?
下面是我试图用来约束事物的一堆代码……无济于事。谢谢。
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