边框未套用至全图

时间:2019-03-29 06:22:00

标签: ios uiview border cashapelayer

我正在为我的UIView设置一个虚线边框,该边框正在iPhone 6,7,8中得到应用。但是,如果在iPhone XR中打开,它就会像这样。

我的视图被命名为camerauiview

我通过在viewdidload()中调用边框来设置此边框。

func setupBorder(){
    let dashedborder = CAShapeLayer()
    dashedborder.strokeColor = #colorLiteral(red: 0.4076032743, green: 0.1454663677, blue: 0.9795397903, alpha: 1)
    dashedborder.lineWidth = 2
    dashedborder.lineDashPattern = [7 , 7]
    dashedborder.frame = camerauiview.bounds
    dashedborder.fillColor = nil
    dashedborder.path = UIBezierPath(rect: camerauiview.bounds).cgPath
    camerauiview.layer.addSublayer(dashedborder)
}

这是这样来的。 enter image description here

作为参考,我将背景色设为灰色只是为了展示其覆盖的面积。

1 个答案:

答案 0 :(得分:0)

使用func viewDidLayoutSubviews()

当视图控制器的视图的边界改变时,视图将调整其子视图的位置,然后系统调用此方法。但是,调用此方法并不表示该视图的子视图的各个布局已调整。每个子视图负责调整其自己的布局。

视图布局子视图后,您的视图控制器可以重写此方法以进行更改。此方法的默认实现不执行任何操作。

使用func setupBorder()覆盖func viewDidLayoutSubviews()方法,例如:

override func viewDidLayoutSubviews() {
        setupBorder()
    }