{"id":13995573,"url":"https://github.com/freshOS/KeyboardLayoutGuide","last_synced_at":"2025-07-22T22:31:07.972Z","repository":{"id":26837094,"uuid":"110692479","full_name":"freshOS/KeyboardLayoutGuide","owner":"freshOS","description":"⌨️ KeyboardLayoutGuide, back from when it didn't exist.","archived":false,"fork":false,"pushed_at":"2024-09-20T07:48:41.000Z","size":6072,"stargazers_count":1207,"open_issues_count":8,"forks_count":61,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-07-14T00:38:33.891Z","etag":null,"topics":["autolayout","ios","keyboard","keyboard-layout","layout","layoutguide","swift"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/freshOS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"open_collective":"freshos","github":"s4cha"}},"created_at":"2017-11-14T13:16:15.000Z","updated_at":"2025-07-04T14:45:48.000Z","dependencies_parsed_at":"2024-11-06T19:36:02.042Z","dependency_job_id":"fdcccee3-c2f4-4eea-b348-af12c100492c","html_url":"https://github.com/freshOS/KeyboardLayoutGuide","commit_stats":{"total_commits":75,"total_committers":12,"mean_commits":6.25,"dds":0.2533333333333333,"last_synced_commit":"7d2e679b57c2d22e8e869847c5545c93ba44473b"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/freshOS/KeyboardLayoutGuide","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freshOS%2FKeyboardLayoutGuide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freshOS%2FKeyboardLayoutGuide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freshOS%2FKeyboardLayoutGuide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freshOS%2FKeyboardLayoutGuide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/freshOS","download_url":"https://codeload.github.com/freshOS/KeyboardLayoutGuide/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freshOS%2FKeyboardLayoutGuide/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266583647,"owners_count":23951796,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autolayout","ios","keyboard","keyboard-layout","layout","layoutguide","swift"],"created_at":"2024-08-09T14:03:29.465Z","updated_at":"2025-07-22T22:31:07.602Z","avatar_url":"https://github.com/freshOS.png","language":"Swift","funding_links":["https://opencollective.com/freshos","https://github.com/sponsors/s4cha"],"categories":["Swift"],"sub_categories":[],"readme":"# ⌨️ KeyboardLayoutGuide\n*Apple's missing KeyboardLayoutGuide*\n\n[![Language: Swift 5](https://img.shields.io/badge/language-swift5-f48041.svg?style=flat)](https://developer.apple.com/swift)\n![Platform: iOS 9+](https://img.shields.io/badge/platform-iOS-blue.svg?style=flat)\n[![SPM compatible](https://img.shields.io/badge/SPM-compatible-4BC51D.svg?style=flat)](https://swift.org/package-manager/)\n[![Build Status](https://app.bitrise.io/app/37eb1367c9a89767/status.svg?token=Zu0mEd5DWq8LNyWbvKxL1A)](https://app.bitrise.io/app/37eb1367c9a89767)\n[![codebeat badge](https://codebeat.co/badges/8e52bcad-c73b-4d19-83b9-7af8464a288e)](https://codebeat.co/projects/github-com-freshos-keyboardlayoutguide-master)\n[![License: MIT](http://img.shields.io/badge/license-MIT-lightgrey.svg?style=flat)](https://github.com/s4cha/Stevia/blob/master/LICENSE)\n[![GitHub tag](https://img.shields.io/github/release/freshos/KeyboardLayoutGuide.svg)](https://github.com/freshOS/KeyboardLayoutGuide/releases)\n\n\n- [x] No Subclassing / Protocol inheritance / obscure overrides\n- [x] No more keyboard notification handling\n- [x] `UIKit` Friendly\n- [x] Takes `safeArea` into account\n- [x] Only animates if view is fully on screen\n\n\u003cimg src=\"Images/demo.gif\" width=250\u003e\n\n## How to use it\n\nSimply constrain your views to the KeyboardLayoutGuide's top anchor the way you would do natively:\n\n\n```swift\noverride func viewDidLoad() {\n    super.viewDidLoad()\n\n    // Pin your button to the keyboard\n    button.bottomAnchor.constraint(equalTo: view.keyboardLayoutGuide.topAnchor).isActive = true\n}\n```\n\n**Bonus**: if you're using [Stevia](https://github.com/freshOS/Stevia), this gets even more concise \\o/\n```swift\nbutton.Bottom == view.keyboardLayoutGuide.Top\n```\n\nIf you add your view in Interface Builder, don't forget to enable the \"**Remove at build time**\" checkbox for the bottom constraint:\n\n\u003cimg src=\"Images/constraint.png\" width=258\u003e\n\n## Safe Area\nBy default, KeyboardLayoutGuide will align your item with the bottom safe area.\nThis is a behaviour that can be opt out by using `keyboardLayoutGuideNoSafeArea` instead of `keyboardLayoutGuide`.\n\n## Installation\n\nThe Swift Package Manager (SPM) is now the official way to install `KeyboardLayoutGuide`. The other package managers are now deprecated as of `1.7.0` and won't be supported in future versions.\n\n#### Swift Package Manager\n\n`Xcode` \u003e `File` \u003e `Swift Packages` \u003e `Add Package Dependency...` \u003e `Paste` `https://github.com/freshOS/KeyboardLayoutGuide`\n\n### CocoaPods - Deprecated\n\nTo install `KeyboardLayoutGuide` via [CocoaPods](http://cocoapods.org), add the following line to your Podfile:\n\n```\ntarget 'MyAppName' do\n  pod 'Keyboard+LayoutGuide'\n  use_frameworks!\nend\n```\n\n### Carthage - Deprecated\n\nTo install `KeyboardLayoutGuide` via [Carthage](https://github.com/Carthage/Carthage#if-youre-building-for-ios-tvos-or-watchos), add the following line to your Cartfile:\n\n```\ngithub \"freshos/KeyboardLayoutGuide\"\n```\n\n### Manually\nJust add `Keyboard+LayoutGuide.swift` to your Xcode project.\n\n## License\n\n`KeyboardLayoutGuide` is available under the MIT license. See the [LICENSE](LICENSE) file for more info.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FfreshOS%2FKeyboardLayoutGuide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FfreshOS%2FKeyboardLayoutGuide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FfreshOS%2FKeyboardLayoutGuide/lists"}