как удалить безопасную область из UIView программно в Swift? - PullRequest
0 голосов
/ 30 мая 2020

Это настраиваемый вид, в этом виде создается квадрат с заданной рамкой и цветом фона. Я добавляю настраиваемое представление в подпредставление, оно отображается правильно. Но я не могу закрыть нижнюю безопасную область, кто угодно может помочь мне удалить безопасную область снизу Программно.

class CustomView: 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()

}

}

1 Ответ

0 голосов
/ 30 мая 2020

Рассмотрим следующий пример:

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)
        ])
    }
}

Результат:
enter image description here

Если вы не хотите go над безопасной зоной, тогда вы можете использовать myView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor) внутри NSLayoutConstraint.activate([...]). Так что на самом деле вам не нужно удалять SafeArea, потому что вы можете просто игнорировать их, если хотите ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...