gpt4 book ai didi

ios - 如何将 subview Controller 的 View 限制到选项卡栏的顶部 anchor ?

转载 作者:行者123 更新时间:2023-11-30 11:56:53 24 4
gpt4 key购买 nike

enter image description here

在上图中,我尝试创建一个功能,可以通过 Yelp API 搜索特定业务。这个 subview View Controller 内部有一个 TableView 。

我使用以下代码将 subview Controller 添加到其父 View Controller :

func addChildBusinessSearchController(){

businessSearchResultController = storyboard?.instantiateViewController(withIdentifier: "BusinessSearchResultController") as! BusinessSearchResultController
businessSearchResultController.delegate = self
businessSearchResultController.managedObjectContext = managedObjectContext


view.addSubview(businessSearchResultController.view)
self.addChildViewController(businessSearchResultController)
businessSearchResultController.didMove(toParentViewController: self)

businessSearchResultController.view.translatesAutoresizingMaskIntoConstraints = false
let heightConstraint = businessSearchResultController.view.heightAnchor.constraint(equalToConstant: self.view.bounds.height)
let leadingConstraint = businessSearchResultController.view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor)
let widthConstraint = businessSearchResultController.view.widthAnchor.constraint(equalToConstant: self.view.bounds.width)
let topViewUpperConstraint = businessSearchResultController.view.topAnchor.constraint(equalTo: bottomLayoutGuide.topAnchor, constant: -55)
topViewUpperConstraint.identifier = ChildControllersUpperConstraints.businessSearchResultControllerTopConstraintIdentifier

NSLayoutConstraint.activate([heightConstraint, leadingConstraint, widthConstraint, topViewUpperConstraint])

let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(businessSearchResultControllerdidPan(_:)))


businessSearchResultController.view.addGestureRecognizer(panGestureRecognizer)

}

在子 Controller 中,我尝试限制表格 View ,以便它以正确的尺寸显示在屏幕上:

   func setUpTableView(){

tableView.translatesAutoresizingMaskIntoConstraints = false
let topConstraint = tableView.topAnchor.constraint(equalTo: headerView.bottomAnchor)
let leadingConstraint = tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor)
let trailingConstraint = tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor)
let heightConstraint = tableView.heightAnchor.constraint(equalToConstant: 450)


NSLayoutConstraint.activate([topConstraint, leadingConstraint, trailingConstraint, heightConstraint])
tableView.clipsToBounds = true
tableView.backgroundColor = UIColor.clear
}

但是,我有一个问题:我似乎无法将“BusinessSearchResultController”中 TableView 的底部限制到选项卡栏的顶部,以便它填充此 TableView 的所有空间。据我所知,这是因为我在以下代码中为其指定了 450 的非动态高度:

let heightConstraint = tableView.heightAnchor.constraint(equalToConstant: 450)

但我尝试了不同的方法来实现此 TableView 的正确高度,包括将其 bottomAnchor 限制为其父 bottomLayoutGuidetopAnchor这当然会导致错误,因为它们没有共同的祖先。

任何解决此问题的帮助将不胜感激......

最佳答案

您的 TableView 是 BusinessSearchResultController 的 subview 。

您不希望 TableView 上有高度约束,您希望将 TableView 的底部限制到其父 View 的底部——就像设置其前导和尾随约束。

然后,将 businessSearchResultController.view 的底部约束到 super View 的底部,与设置前导和尾随的方式相同限制条件。

关于ios - 如何将 subview Controller 的 View 限制到选项卡栏的顶部 anchor ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47718514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com