Как установить размер безопасной зоны по устройству? - PullRequest
0 голосов
/ 11 ноября 2019

Я хочу установить зону безопасности по устройству. Мой веб-просмотр установлен на SafeArea above, SuperView below. После серии iPhone X значение Y равно 44 из-за области notch. Но для iPhone 6 и iPhone 8, 44 слишком широк. Как мне его настроить?

Область текущего WKWebView

enter image description here

Загрузить область WebView из Current Swift5

@IBOutlet var WKWebView: FullScreenWKWebView!
...
        let config = WKWebViewConfiguration()

        contentController.add(self, name: "goApp")

        config.userContentController = contentController

        WKWebView = FullScreenWKWebView(frame: WKWebView.frame, configuration: config)

        WKWebView.uiDelegate = self
        WKWebView.navigationDelegate = self
        WKWebView.scrollView.delegate = self
        view.addSubview(WKWebView)
        view.addSubview(indicator)
...
class FullScreenWKWebView: WKWebView {
    override var safeAreaInsets: UIEdgeInsets {
        return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
    }
}

Я хочу установить область Top SafeArea по устройству.

Я пытаюсь что-то сделать, но безуспешно.

Я установил ограничения, но на экранах справа и снизувырезать, а верх все еще слишком широк для iPhone 6.

enter image description here

Верхняя часть iPhone 6

enter image description here

Ответы [ 2 ]

0 голосов
/ 12 ноября 2019

Я не могу безоговорочно установить верхнюю область WKWebView как зону безопасности. Потому что зона безопасности включает в себя NavigationController бар. Но я не использую NavigationController. Поэтому невозможно установить зону безопасности в качестве ограничения.

Поэтому я решил эту проблему, разделив ее по размеру устройства.

Установите Main Story Board

enter image description here

Настройка высоты и Y-значений WKWebVIew в соответствии с высотой устройства

let screenHeight = UIScreen.main.bounds.size.height
if screenHeight > 667 {
            WKWebView = FullScreenWKWebView(frame: CGRect( x: 0, y: 44, width: WKWebView.frame.width, height: WKWebView.frame.height - 44 ), configuration: config)
        } else {
            WKWebView = FullScreenWKWebView(frame: CGRect( x: 0, y: 20, width: WKWebView.frame.width, height: WKWebView.frame.height - 20 ), configuration: config)
        }

iPhone 6

enter image description here

iPhone X и после

enter image description here

0 голосов
/ 11 ноября 2019

Сделайте привязку привязанной к безопасной области и присвойте ей желаемое значение. Он автоматически адаптируется ко всем устройствам.

Здесь вы можете увидеть UIView с синим фоном, закрепленный сверху и снизу к безопасной зоне со значением 0 (вы можете увеличить значение, если хотите больше расстояния до сейфаплощадь).

Storyboard View constraints


Вид будет отображаться автоматически с указанием подходящего расстояния до безопасной зоны(44 для iPhone X или выше и 0 для iPhone 8 и ниже).

iPhone X result iPhone 8 result

...