微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

UITableView 的高度与自动布局的内容但限制 UITableView 高度

如何解决UITableView 的高度与自动布局的内容但限制 UITableView 高度

我在 UITableView 中有 UIButtonUIViewController

UIViewController -> UIView -> UITableView
                           -> UIButton

UITableView 高度设置为根据其内在内容大小进行相应更改。当 UITableView 中有更多行数时,高度会增加,但我不想增加 UIButton 不可见。我不想在那个 UIScrollView 中有 UIViewController。 UIButton 的约束设置为距底部 25 像素,距 UITbaleView 25 像素,宽度设置为屏幕宽度的 70%。我将 UITableView 的约束设置为距顶部 10 像素,宽度与超级视图相同,高度设置为 590。我不确定如何设置优先级,以便即使 UITableView 中的行数更多,UIButton 也会可见。

我使用下面的代码增加 UITableView 的高度

override func updateViewConstraints() {
        tableViewHeight.constant = TableIb.contentSize.height
        super.updateViewConstraints()
    }

解决方法

限制按钮:

  • 距 tableView 底部 25 点
  • 底部小于或等于 -25 点距视图底部(安全区域)

为您的 tableViewHeight 约束设置小于要求的优先级。

例如:

    button.topAnchor.constraint(equalTo: tableView.bottomAnchor,constant: 25.0).isActive = true
    button.bottomAnchor.constraint(lessThanOrEqualTo: view.safeAreaLayoutGuide.bottomAnchor,constant: -25.0).isActive = true
    
    // whatever you want to start your tableView height at...
    //  it doesn't really matter,as I assume you'll be immediately
    //  changing its .constant value
    tableViewHeight = tableView.heightAnchor.constraint(equalToConstant: 30.0)
    tableViewHeight.priority = .defaultHigh
    tableViewHeight.isActive = true

按钮将从 tableView 底部“粘住” 25 pts,当您更改 tableViewHeight.constant 时,它将“按下按钮”但仅直到它离视图底部 25 pts (安全区)。

作为旁注,养成用代替像素,用视图宽度代替的习惯屏幕宽度


或者,将您的按钮嵌入到 UIView 中并将该视图设置为 viewForFooterInSection。它将“粘”到 tableView 的底行,但在 tableView 需要滚动时保持可见。

这将使您无需不断调整 tableView 的大小。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。