SettingsKit
A light-weight, extensible package for easily building pixel-perfect iOS settings screens in a pinch.
Installation
SettingsKit can be installed using Swift Package Manager. To get started…
- Open your project in Xcode and navigate to
File,Add Packages... - Search for
https://github.com/sebjvidal/SettingsKit.gitin the “Search or Enter Package URL” toolbar item - Choose
SettingsKit - Click
Add Package
Usage
To create a new settings screen, create an array of SettingsKitSections. A section has a children and optional header and footer parameters.
import SettingsKit
let sections: [SettingsKitSection] = [
SettingsKitSecetion(
settings: [
SettingsKitGroup(
icon: SettingsKitIcon(
symbol: UIImage(systemName: "gear"),
config: UIImage.SymbolConfiguration(pointSize: 21),
colour: .systemGray
),
title: "General",
children: [
SettingsKitSecetion(
settings: [
SettingsKitToggle(title: "A Toggle Cell", key: "toggle")
SettingsKitTextField(title: "A TextField Cell", key: "textField")
]
)
]
)
]
)
]
let viewController = SettingsKitViewController(sections: sections)
The children property of SettingsKitSections takes an array of SettingsKitSections, so you can go as many layers deep as you need.
The root SettingsKitViewController navigation elements can be customised as follows.
viewController.title = "SettingsKit"
viewController.navigationItem.largeTitleDisplayMode = .automatic
viewController.navigationController?.navigationBar.prefersLargeTitles = true
About
SettingsKit is built with UIKit, so you can customise the SettingsKitViewController as you would a UITableViewController.
Be careful when overriding the SettingsKitViewController tableView‘s delegate methods, as the following methods are used internally to make the package functional:
numberOfSections(in:)tableView(_:titleForHeaderInSection:)tableView(_:titleForFooterInSection:)tableView(_:numberOfRowsInSection:)tableView(_:cellForRowAt:)tableView(_:heightForRowAt)tableView(_:shouldHighlightRowAt:)tableView(_:didSelectRowAt:)
