Y在iPhone x上关闭

时间:2018-01-08 22:19:15

标签: ios swift iphone-x

我正在尝试在表格视图的顶部画一条线,如下所示:

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外,每个设备都能正常使用。

我已尝试获取safeAreaInsetssafeAreaLayoutGuide,但似乎没有做任何事情。

任何帮助都非常感谢!

修改

Table border working

以上是最终结果的样子。这里的表视图有一个红色背景,我的绿色CALayer正如预期的那样位于顶部。它已使用上述功能放置在那里。这是它在除iPhone X之外的每个设备上的外观。

Table border not working

以下是在iPhone X上运行相同代码时会发生的情况。

1 个答案:

答案 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