iPhone7Plus和iPhone6版本之间的边界宽度不同

时间:2018-03-31 03:44:39

标签: ios swift uiview

我已经创建了自定义UIView并在UIView中添加了小分隔符(1点高度)。问题是它完全适用于iPhone6和iPhone7。但是plus版本,它不能占用其视图宽度的100%。它需要40个点来填充其视图宽度的100%。我的代码如下:

override func setup() {
    backgroundColor = JBCColor.greySoft
    let border = CALayer()
    border.backgroundColor = JBCColor.darkGrey.cgColor
    border.frame = CGRect(x: 0, y: 0, width: self.layer.frame.size.width, height: 2)
    self.layer.addSublayer(border)
}

请告诉我如何修复它。感谢。

1 个答案:

答案 0 :(得分:0)

要解决您的问题,您需要在每次查看框架更改时更新图层框架。例如,更新viewDidLayoutSubviews中的图层框架。

class YourView: UIView {

  let border: CALayer = {
    let layer = CALayer()
    layer.backgroundColor = JBCColor.darkGrey.cgColor
    return layer
  }()

  override func setup() {
    backgroundColor = JBCColor.greySoft
    self.layer.addSublayer(border)
    border.frame = CGRect(x: 0, y: 0, width: self.layer.frame.size.width, height: 2)
  }

  override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    border.frame = CGRect(x: 0, y: 0, width: self.layer.frame.size.width, height: 2)
  }
}

有关详情,请参阅this post