PresentationKeyboardTranslation.swift 882 B

1234567891011121314151617181920212223242526272829303132333435
  1. //
  2. // Created by Tom Baranes on 13/08/16.
  3. // Copyright © 2016 IBAnimatable. All rights reserved.
  4. //
  5. import UIKit
  6. public enum ModalKeyboardTranslation: String, IBEnum {
  7. case none
  8. case moveUp
  9. case aboveKeyboard
  10. case stickOrMoveUp
  11. public func translationFrame(keyboardFrame: CGRect, presentedFrame: CGRect) -> CGRect {
  12. let keyboardMinY = UIScreen.main.bounds.height - keyboardFrame.height
  13. var frame = presentedFrame
  14. switch self {
  15. case .moveUp:
  16. frame.origin.y -= keyboardFrame.height
  17. case .aboveKeyboard:
  18. frame.origin.y = keyboardMinY - presentedFrame.height - 20
  19. case .stickOrMoveUp:
  20. if frame.maxY > keyboardMinY {
  21. frame.origin.y = keyboardMinY - presentedFrame.height - 20
  22. }
  23. default:
  24. break
  25. }
  26. return frame
  27. }
  28. }
  29. #if swift(>=4.2)
  30. extension ModalKeyboardTranslation: CaseIterable {}
  31. #endif