2016-12-14 2 views
0

Я не могу иметь дело с автозапуском, мне нужно реализовать аналогичную страницу входа в facebook/instagram. То есть, когда вы нажимаете на логин ввода или пароль, клавиатура и все представления адаптируются к новому размеру окна.Автоматическое выравнивание представлений, если появляется клавиатура

enter image description here

После появления клавиатуры, это выглядит следующим образом: enter image description here

func updateBottomLayoutConstraintWithNotification(_ notification: Notification) { 
    let userInfo = notification.userInfo! 

    let animationDuration = (userInfo[UIKeyboardAnimationDurationUserInfoKey] as! NSNumber).doubleValue 
    let keyboardEndFrame = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue 
    let convertedKeyboardEndFrame = view.convert(keyboardEndFrame, from: view.window) 
    let rawAnimationCurve = (notification.userInfo![UIKeyboardAnimationCurveUserInfoKey] as! NSNumber).uint32Value << 16 
    let animationCurve = UIViewAnimationOptions.init(rawValue: UInt(rawAnimationCurve)) 

    bottomLayoutConstraint.constant = (view.bounds).maxY - convertedKeyboardEndFrame.minY 

    UIView.animate(withDuration: animationDuration, delay: 0.0, options: animationCurve, animations: { 
     self.view.layoutIfNeeded() 
    }, completion: nil) 
} 

ответ

0

Советы по Autolayout:

  1. Использование scroll view или static table view.
  2. Если вы используете статическую таблицу, просмотрите все прокрутки и связанные с клавиатурой вещи, обработанные самим табличным представлением.
  3. Если вы используете прокрутку, просто начните давать ограничения от верхнего элемента до конца и используйте библиотеку this, она очень полезна и проста в использовании. Смотрите рисунок ниже

Спасибо :) enter image description here

+0

кое-что Instagram запустить и посмотреть, как она реализуется. Нажав на поле ввода, все элементы сдвинуты вверх. – Feanon

Смежные вопросы