我在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)
答案 0 :(得分:0)
如果您使用的是自动布局(NSLayoutConstraint
),则无需将其锁定或居中放置tableView。
如果不使用“自动”布局,则应将tableView的框架如下所示:
tableView.frame = CGRect(x: 0, y: heightOfYourSmallBar, width: self.view.frame.width, height: self.view.frame.height - heightOfYourSmallBar)
答案 1 :(得分:0)
仅设置框架和中心是不够的,因为当按下/显示视图控制器时,视图的框架可能会改变。您应该做的是使用布局约束。我发现Layout Anchors是通过编程方式创建约束的最简单方法
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
的顶部锚点与topBar
的底部锚点对齐,其他tableView的约束也与视图的前导,尾随和底部对齐。
答案 2 :(得分:0)
如果您使用的是AutoLayout
,则无法设置框架,只需设置适当的约束条件即可将UITableView
放在UIViewController
中
translatesAutoresizingMaskIntoConstraints = false
设置为tableView以使用自动版式将约束应用于位置和视图
enter code heretableView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
tableView.topAnchor.constraint(equalTo: view.topAnchor),
tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -110)
])