UIKeyboardLayoutGuide
. Если вы уже знакомы с такими гайдами, как safeAreaLayoutGuide
и readableContentGuide
, новый покажется вам супер интуитивным. Давайте попробуем использовать его на простом примере — экране авторизации с текстовыми полями и кнопкой логина, закрепленной внизу.view.addSubview(loginButton)
let buttonBottom = view.keyboardLayoutGuide.topAnchor.constraint(equalToSystemSpacingBelow: loginButton.bottomAnchor, multiplier: 1.0)
let buttonTrailing = view.keyboardLayoutGuide.trailingAnchor.constraint(equalToSystemSpacingAfter: loginButton.trailingAnchor, multiplier: 1.0)
NSLayoutConstraint.activate([buttonBottom, buttonTrailing])
loginButton
привязана к изменениям клавиатуры. Когда клавиатура скрывается, keyboardLayoutGuide.topAnchor
совпадает с safeAreaLayoutGuide.bottomAnchor
.view.keyboardLayoutGuide.followsUndockedKeyboard = true
loginButton
начинает следовать за клавиатурой:loginButton
может оказаться за пределами размеров superview. UIKeyboardLayoutGuide
– это подкласс UITrackingLayoutGuide
. Это гайд, который автоматически активирует и деактивирует constraints в зависимости от близости к краям экрана. buttonTrailing
на: let buttonTop = view.keyboardLayoutGuide.topAnchor.constraint(equalToSystemSpacingBelow: loginButton.bottomAnchor, multiplier: 1.0)
buttonTop.identifier = "buttonTop"
view.keyboardLayoutGuide.setConstraints([buttonTop], activeWhenAwayFrom: .top)
buttonTop
будет активным, только когда клавиатура находится далеко от верхней границы экрана. buttonBottom
, чтобы закрепить loginButton
внизу клавиатуры:let buttonBottom = loginButton.topAnchor.constraint(equalToSystemSpacingBelow: view.keyboardLayoutGuide.bottomAnchor, multiplier: 1.0)
buttonBottom.identifier = "buttonBottom"
view.keyboardLayoutGuide.setConstraints([buttonBottom], activeWhenNearEdge: .top)
К сожалению, не доступен сервер mySQL