【问题标题】:how to remove safe area from UIView Programmatically in Swift?如何在 Swift 中以编程方式从 UIView 中删除安全区域?
【发布时间】:2020-05-30 08:49:56
【问题描述】:

这是一个自定义视图,此视图创建一个带有背景颜色的给定框架的正方形。我正在向子视图添加自定义视图,视图正确显示。但我无法覆盖底部安全区域,任何人都可以帮助我以编程方式从底部移除安全区域。

自定义视图类:UIView {

override var frame: CGRect {

    didSet {
        setNeedsDisplay()

    }

}

override init(frame: CGRect) {
    super.init(frame: frame)
    self.isOpaque = false
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    self.isOpaque = false
}

override func draw(_ rect: CGRect) {

    UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.7).setFill()
    UIRectFill(rect)

    let square = UIBezierPath(rect: CGRect(x: 200, y: rect.size.height/2 - 150/2, width: 
   UIScreen.main.bounds.size.width - 8, height: 150))
    let dashPattern : [CGFloat] = [10, 4]
    square.setLineDash(dashPattern, count: 2, phase: 0)
    UIColor.white.setStroke()
    square.lineWidth = 5
    square.stroke()

}

}

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    考虑以下示例:

    class ViewController: UIViewController {
    
        private let myView = UIView()
    
        override func viewDidLoad() {
            super.viewDidLoad()
            configureCustomView()
        }
    
        private func configureCustomView() {
            myView.translatesAutoresizingMaskIntoConstraints = false
            view.addSubview(myView)
            myView.backgroundColor = .systemPurple
    
            NSLayoutConstraint.activate([
                myView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
                myView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
                myView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
                myView.heightAnchor.constraint(equalToConstant: 200)
            ])
        }
    }
    

    结果:

    如果您不想越过安全区域,那么您可以在NSLayoutConstraint.activate([...]) 中使用myView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor)。 因此,您实际上不必删除 SafeArea,因为如果您愿意,您可以简单地忽略它们...

    【讨论】:

      【解决方案2】:

      如果您想快速完成此操作。 (不是以编程方式)

      1. 打开故事板。
      2. 选择您的 UIView。

      1. 应取消选择安全区域。

      【讨论】:

        猜你喜欢
        • 2018-05-25
        • 1970-01-01
        • 2018-05-26
        • 2018-03-01
        • 1970-01-01
        • 2011-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多