Swift: Auto Layout - программно добавляем всплывающее окно - PullRequest
0 голосов
/ 02 декабря 2018

Я генерирую KeyboardView, который скользит вверх по вертикали, а затем занимает нижнюю треть представления, который используется для его генерации:

class KeyboardView: UIView {

    private var width: CGFloat!
    private var height: CGFloat!

    init(withinView view: UIView) {
        super.init(frame: view.frame)
        configureKeyboard()
    }

    private func configureKeyboard() {
        width = frame.width
        height = frame.height * 0.33
        center = CGPoint(x: width / 2, y: frame.height - halfHeight)
        let origin = CGPoint(x: center.x - halfWidth, y: (center.y - halfHeight) + height)
        let size = CGSize(width: width, height: height)
        frame = CGRect(origin: origin, size: size)    
        isUserInteractionEnabled = true

    }

}

Затем я добавляю клавиши этой клавиатурыкак UIButton экземпляров после вызова метода configureKeyboard.

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

Нужно ли настраивать значение frame.origin для размещения нижней вставки?то есть

frame.origin.y += UIApplication.shared.keyWindow?.safeAreaInsets.bottom ?? 0.0

или есть другой способ достичь этого программно?

Спасибо за любую помощь, все еще приспосабливаясь к использованию автоматического макета.

...