我正在为我的 UIView 设置虚线边框,它正在 iPhone 6、7、8 中应用。但是如果在 iPhone XR 中打开它是这样的。
我的 View 命名为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)
}
作为引用,我将背景颜色设置为灰色,只是为了展示它覆盖了多少区域。
最佳答案
使用func viewDidLayoutSubviews()
当 View Controller View 的边界发生变化时, View 会调整其 subview 的位置,然后系统调用此方法。但是,调用此方法并不表示已调整 View subview 的各个布局。每个 subview 负责调整自己的布局。
您的 View Controller 可以覆盖此方法以在 View 布置其 subview 后进行更改。此方法的默认实现不执行任何操作。
在重写 func viewDidLayoutSubviews() 方法中使用您的 func setupBorder()
,例如:
override func viewDidLayoutSubviews() {
setupBorder()
}
关于ios - 边框未应用于全 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55411575/