Получить безопасную область вставки слева и справа, чтобы установить поля tableView - PullRequest
0 голосов
/ 23 февраля 2019

Мне нужно иметь табличное представление для iphone X с полями относительно руководства по компоновке safearea:

Вот результат, который я получаю: ставка на слишком большой разрыв.левый край и край моего табличного представления

Я попытался установить источник (x), например:

view.frame.width - view.safeAreaLayoutGuide.width


let x = view.safeAreaLayoutGuide.origin.x

введите описание изображения здесь

это мой код ниже:

var safeAreainsets: UIEdgeInsets {
        if #available(iOS 11.0, *) {
            guard let window = UIApplication.shared.keyWindow else {  return UIEdgeInsets.zero }
            return window.safeAreaInsets
        }
        return UIEdgeInsets.zero
    }

    var layoutFrame: CGRect {
        let guide = view.safeAreaLayoutGuide
        return guide.layoutFrame
    }

    var hasSafeArea: Bool {
        return safeAreainsets.top > 0 || safeAreainsets.right > 0 || safeAreainsets.bottom > 0 || safeAreainsets.left > 0
    }

    //property to check if device is iPhoneX - not completely future proof though
    fileprivate var isIphoneX: Bool {
        if layoutFrame.width - view.frame.width != 0 { return true }
        return false
    }

    fileprivate var tableViewFrame: CGRect {

        //calculating margins value if applicable
        let margins = shouldShowFlexibleHeader && isRegular && isLandscape ? (view.frame.width * 10) / 100 : 0
        //setting tableView frame with following conditions
        let x = view.frame.width - layoutFrame.width
        if isIphoneX {
            return CGRect(x: isLandscapeLeft ? x : 0, y: 0, width: view.frame.width, height: view.frame.height)
        } else {
            return CGRect(x: margins / 2, y: 0, width: view.frame.width - margins, height: view.frame.height)
        }
    }

как устранить этот пробел

...