Граница не применяется для полного просмотра - PullRequest
0 голосов
/ 29 марта 2019

Я устанавливаю пунктирную границу для моего 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 голосов
/ 29 марта 2019

Использование func viewDidLayoutSubviews()

Когда границы для представления контроллера представления изменяются, представление корректирует позиции своих подпредставлений, а затем система вызывает этот метод. Однако этот вызываемый метод не означает, что отдельные макеты подпредставлений представления были скорректированы. Каждое подпредставление отвечает за настройку своего макета.

Ваш контроллер представления может переопределить этот метод, чтобы вносить изменения после того, как представление размещает свои подпредставления. Реализация этого метода по умолчанию ничего не делает.

Используйте func setupBorder() в функции переопределения func viewDidLayoutSubviews (), например:

override func viewDidLayoutSubviews() {
        setupBorder()
    }
...