Clavier is Keyboard Layout Guide for iOS. It using an intersection frame to calculate the Layout Guide.
To run the example project, clone the repo, and run pod install
from the Example directory first.
- Swift 5.1 or higher
- iOS 10.0 or higher
- Swift 5.1 or higher
- iOS 10.0 or higher
Clavier is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'Clavier', '~> 2.0.3'
- Add it using XCode menu File > Swift Package > Add Package Dependency
- Add https://github.com/hainayanda/Clavier.git as Swift Package URL
- Set rules at version, with Up to Next Major option and put 2.0.3 as its version
- Click next and wait
Add as your target dependency in Package.swift
dependencies: [
.package(url: "https://github.com/hainayanda/Clavier.git", .upToNextMajor(from: "2.0.3"))
]
Use it in your target as Clavier
.target(
name: "MyModule",
dependencies: ["Clavier"]
)
Nayanda Haberty, hainayanda@outlook.com
Clavier is available under the MIT license. See the LICENSE file for more info.
Clavier is the Keyboard Layout Guide created to make constraints to the keyboard. It will automatically change on the keyboard changes. It calculates the intersection frame of the Keyboard and the UIView
. As you can see in the picture below:
If the keyboard did not intersect with the view, it will always use the most bottom of the UIView
with zero height for the regular one, or most bottom of the safe area when using a safe one
If the keyboard is hidden, it will always use the most bottom of the UIView with zero height for the regular one, or most bottom of the safe area when using a safe one
To use Clavier, just use clavierLayoutGuide
from any UIView
, or safeClavierLayoutGuide
if you prefer the one intersect with the safe area. it is an instance of ClavierLayoutGuide
class which extend UILayoutGuide
so it has all its anchors, like topAnchor
, leadingAnchor
, etc:
myView.bottomAnchor.constraints(equalTo: mySuperview.clavierLayoutGuide.topAnchor)
or with safe area:
myView.bottomAnchor.constraints(equalTo: mySuperview.safeClavierLayoutGuide.topAnchor)
myView will automatically move according to keyboard layout guide frame changes.
Since its subclass of UILayoutGuide, it has layoutFrame which is the intersection frame with keyboard frame, if you need it:
let frameIntersectWithKeyboard: CGRect = view.clavierLayoutGuide.layoutFrame
or with safe area:
let frameIntersectWithKeyboard: CGRect = view.safeClavierLayoutGuide.layoutFrame
On iOS 15, Clavier will defaultly use keyboardLayoutGuide
from UIKit. on safeClavierLayoutGuide
, it will use custom class that utilize keyboardLayoutGuide
and safeAreaLayoutGuide
You can explicitly disable iOS 15 keyboardLayoutGuide
if you want by set directly with the view or by using global config.
myView.usingAppleKeyboardLayoutGuideIfAvailable = false
// or to apply as default with all view
ClavierGlobalConfig.usingAppleKeyboardLayoutGuideIfAvailable = false
You know how, just clone and do pull request