space 在我视图边框的开头

space at the beginning of my view's border

我正在为我的视图添加边框,如下所示:

func addBottomBorderWithColor(color: UIColor, width: CGFloat) {
    let border = CALayer()
    border.backgroundColor = color.cgColor
    border.frame = CGRect(x: 0, y: self.frame.size.height, width: self.frame.size.width, height: width)
    self.layer.addSublayer(border)
}

但是 strangley 这在 Iphone 7 上工作正常,但在 iphone 7 plus .. 我会得到这个结果:

如您所见,视图边框的开头有一个 space.. 为什么?

视图的阴影也发生了同样的事情。我是这样做的:

     func dropShadow(scale: Bool = true) {
    layer.shadowColor = UIColor.lightGray.cgColor
    layer.shadowOpacity = 0.5
    layer.shadowOffset = CGSize.zero
    layer.shadowRadius = 1
    layer.shadowPath = UIBezierPath(rect: bounds).cgPath
    layer.shouldRasterize = true
    layer.rasterizationScale = scale ? UIScreen.main.scale : 1
}

并在 iphone 7 加

的视图末尾获得 space

如何解决?

表示你的UI没有更新,调用viewdidAppear或者使用

强制更新viewdidload主线程中的UI
DispatchQueue.main.async {
   //call your addBottomBorderWithColor
}

尝试在

中调用 addBottomBorderWithColor
 override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()


}

UI 根据 ViewDidLoad 之后的约束进行更新。