对于我的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
如果您使用自动布局( //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
设置框架和中心是不够的,因为在按下/显示视图控制器时,视图的框架可能会改变。你应该做的是使用布局约束。我发现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的约束条件与视图的前导,尾随和底部对齐。
如果你正在使用topBar
然后设置框架将无法工作,只需设置适当的约束来定位AutoLayout
在UITableView
UIViewController
以使用AutoLayouttranslatesAutoresizingMaskIntoConstraints = false