UIscrollview проблема с iPhone X - PullRequest
       44

UIscrollview проблема с iPhone X

0 голосов
/ 30 сентября 2019

У меня горизонтальный UIScrollview в моем XIB-файле. Scrollview отлично смотрится на всех устройствах, кроме iPhone X, XS и XR.

Хорошо выглядит в iPhone 8

enter image description here

iPhone X

enter image description here

Я перепробовал все возможные решения, снял флажок под верхней панелью, под нижней панелью, автоматически изменил размер подпредставлений, у меня ничего не работает. iPhone X всегда выглядит одинаково. Верхнее ограничение прокрутки установлено в безопасной области. Я использую файл xib здесь.

 if #available(iOS 11.0, *) {
        scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentBehavior.never
    } else {
        self.automaticallyAdjustsScrollViewInsets = false
        edgesForExtendedLayout = []

        // Fallback on earlier versions
    }

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
        self.scrollView.contentSize = CGSize(width: self.lectureTable.frame.size.width , height: self.scrollView.frame.size.height)
    self.automaticallyAdjustsScrollViewInsets = false
}

Пожалуйста, пролите немного света. Спасибо за тонну.

1 Ответ

0 голосов
/ 01 октября 2019

Я решил это сам. В моем виде прокрутки я использовал UIView.

var hasTopNotch: Bool {
       if #available(iOS 11.0,  *) {
           return UIApplication.shared.delegate?.window??.safeAreaInsets.top ?? 0 > 20
       }
       return false
   }

override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()
    var topbarHeight: CGFloat {
        return UIApplication.shared.statusBarFrame.size.height + (self.navigationController?.navigationBar.frame.height ?? 0.0)
    }
    if hasTopNotch{
        let window = UIApplication.shared.keyWindow
        if #available(iOS 11.0, *) {
            let topPadding = window?.safeAreaInsets.top
            self.customView.frame.size.height = UIScreen.main.bounds.height - (topbarHeight + topPadding!)
        } else {
            // Fallback on earlier versions
        }

    }else{
        let NavBarHeight  = self.navigationController!.navigationBar.frame.height + UIApplication.shared.statusBarFrame.height
        self.customView.frame.size.height = UIScreen.main.bounds.height - NavBarHeight
    }


    }

Это прекрасно работает на всех устройствах.

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