使用程序化约束的表视图大小调整

问题描述 投票:-1回答:3

对于我的qazxsw poi,我遇到了编程约束方面的一些麻烦。

我的宽度正确但不是高度,因为我在页面顶部还有一个小条,它只是一个彩色的UITableView。所以我想这样做,所以表视图正好在条形图的底部开始,但也有整个屏幕的约束。

这是我的UIView代码,

tableView

所以tableView.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height - 110) tableView.center = CGPoint(x: self.view.center.x, y: self.view.center.y + 20) 与顶部栏对齐但现在没有到达屏幕的底部。有帮助吗?

更多代码:

tableView
ios swift tableview constraints
3个回答
0
投票

如果您使用自动布局( //Top Bar topBar.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: 150) topBar.center = CGPoint(x: self.view.center.x, y: self.view.frame.minY) topBar.backgroundColor = UIColor.init(fromHexCode: "1462BF") view.addSubview(topBar) ),则无需框架或居中于您的tableView。

如果您不使用自动布局,则应将tableView框架化,如下所示:

NSLayoutConstraint

0
投票

设置框架和中心是不够的,因为在按下/显示视图控制器时,视图的框架可能会改变。你应该做的是使用布局约束。我发现Layout Anchors是以编程方式创建约束的最简单方法

tableView.frame = CGRect(x: 0, y: heightOfYourSmallBar, width: self.view.frame.width, height: self.view.frame.height - heightOfYourSmallBar)

如您所见,您的tableView.translatesAutoresizingMaskIntoConstraints = false tableView.topAnchor.constraint(equalTo: topBar.bottomAnchor).isActive = true tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true 顶部锚点与您的tableView底部锚点对齐,而其他tableView的约束条件与视图的前导,尾随和底部对齐。


0
投票

如果你正在使用topBar然后设置框架将无法工作,只需设置适当的约束来定位AutoLayoutUITableView

  1. 为tableView设置UIViewController以使用AutoLayout
  2. 将约束应用于位置和视图 translatesAutoresizingMaskIntoConstraints = false
© www.soinside.com 2019 - 2024. All rights reserved.