我正在尝试在表格视图的顶部画一条线,如下所示:
func addTopLineToTableView() {
let layer = CALayer()
layer.backgroundColor = UIColor.green.cgColor
layer.frame = CGRect(x: tableView.frame.origin.x, y: tableView.frame.origin.y, width: tableView.frame.size.width, height: 1.0)
view.layer.addSublayer(layer)
}
除iPhone X外,每个设备都能正常使用。
我已尝试获取safeAreaInsets
和safeAreaLayoutGuide
,但似乎没有做任何事情。
任何帮助都非常感谢!
修改
以上是最终结果的样子。这里的表视图有一个红色背景,我的绿色CALayer正如预期的那样位于顶部。它已使用上述功能放置在那里。这是它在除iPhone X之外的每个设备上的外观。
以下是在iPhone X上运行相同代码时会发生的情况。
答案 0 :(得分:0)
extension UIView {
@IBInspectable var topBorderWidth: CGFloat {
get {
return 0.0 // Just to satisfy property
}
set {
let line = UIView(frame: CGRect(x: 0.0, y: 0.0, width: bounds.width, height: newValue))
line.translatesAutoresizingMaskIntoConstraints = false
line.backgroundColor = UIColor.green
self.addSubview(line)
let views = ["line": line]
let metrics = ["lineWidth": newValue]
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "|[line]|", options: [], metrics: nil, views: views))
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[line(==lineWidth)]", options: [], metrics: metrics, views: views))
}
}
}
这样的使用
testView.topBorderWidth = 1