ios - 边框未应用于全 View

标签 ios uiview border cashapelayer

我正在为我的 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)
}

事情就是这样的。 enter image description here

作为引用,我将背景颜色设置为灰色,只是为了展示它覆盖了多少区域。

最佳答案

使用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/

相关文章:

ios - iOS 6 中自动布局的动态大小

iOS 9、10 核心数据 : Failed to load optimized model at path

iphone - 无法从 Xcode 项目中删除启动图像

ios - 使用 NIB 加载 View 的 UIView.addSubview 只会添加根 UIView

ios - 如何为 "Rate this app"ios 自定义 iRate 类

iphone - 为什么 UIView 的边界是 CGRect 而不是 CGSize?

html - Bootstrap 重叠边框与无边距和填充的列

ios - 如何更改自定义 NavigationItem 标题和背景颜色?

html - 我如何实现缩进边框

java swing setBorder速度问题