Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kieranb662/PartitionKit
A SwiftUI Library for creating resizable partitions for View Content.
https://github.com/kieranb662/PartitionKit
swift-library swift-package-manager swiftui
Last synced: about 1 month ago
JSON representation
A SwiftUI Library for creating resizable partitions for View Content.
- Host: GitHub
- URL: https://github.com/kieranb662/PartitionKit
- Owner: kieranb662
- License: mit
- Created: 2019-10-26T18:31:26.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2020-12-18T06:37:47.000Z (almost 4 years ago)
- Last Synced: 2024-04-22T12:30:47.623Z (8 months ago)
- Topics: swift-library, swift-package-manager, swiftui
- Language: Swift
- Homepage:
- Size: 5.02 MB
- Stars: 236
- Watchers: 5
- Forks: 15
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- fucking-awesome-swift - Partition Kit - A SwiftUI Library for creating resizable partitions for View Content. (Libs / UI)
- awesome-swift - Partition Kit - A SwiftUI Library for creating resizable partitions for View Content. ` 📝 6 months ago ` (UI [🔝](#readme))
- awesome-swift - Partition Kit - A SwiftUI Library for creating resizable partitions for View Content. (Libs / UI)
README
# Partition Kit
![partition kit logo](https://github.com/kieranb662/PartitionKit/blob/master/partition-kit-logo.png)
Recently Featured In [Top 10 Trending Android and iOS Libraries in October](https://medium.com/better-programming/top-10-trending-android-and-ios-libraries-in-october-e7dd18f8b75b) and in [5 iOS libraries to enhance your app](https://medium.com/better-programming/5-ios-libraries-to-enhance-your-app-17ae7ed350db)!
![grid](/nestedGrid.gif)
What is PartitionKit?
- It is the solution to the need for composable and dynamically sized user interface content in SwiftUI.
- also the first piece of software I have ever made into a library so please be gentle(both with use cases and with my heart).What PartitionKit is **not** ?
- PartitionKit is not a means to work with an form of stored data, this is not for partitioning hard drives or any other type of formattable data drive.## Requirements
PartitionKit as a default requires the SwiftUI Framework to be operational, as such only these platforms are supported:
* macOS 10.15 or Greater
* iOS 13 or Greater
* tvOS 13 or Greater
* watchOS 6 or Greater## How To Add To Your Project
1. Snag that URL from the github repo
2. In Xcode -> File -> Swift Packages -> Add Package Dependencies
3. Paste the URL Into the box
4. Specify the minimum version number (This is new so 1.0.0 and greater will work).## Less Than 2 Minute Tutorial Video
[![Tutorial Video: How To Use PartitionKit](https://img.youtube.com/vi/RSnEevQcqjk/0.jpg)](https://www.youtube.com/watch?v=RSnEevQcqjk)
## How To Use
### Vertical Partition
1. Decide on what view you would like to have on `Top`, which you would like to have on the `Bottom` and optionally a `Handle` to be used to drag the partitions to different sizes.
2. Do This
``` Swift
VPart(top: {
MyTopView()
}, bottom: {
MyBottomView()
}) {
MyHandle()
}
```### Horizontal Partition
1. Decide on what view you would like to have on `Left`, which you would like to have on the `Right` and optionally a `Handle` to be used to drag the partitions to different sizes.
2. Do This
``` Swift
HPart(left: {
MyLeftView()
}, right: {
MyRightView()
}) {
MyHandle()
}
```### GridPartition
1. Decide on what Views will go in each corner `TopLeft`, `TopRight`, `BottomLeft`, `BottomRight` and optionally a `Handle` for the user to drag and resize the views with.
2. Do this
``` Swift
GridPart(topLeft: {
MyTopLeftView()
}, topRight: {
MyTopRightView()
}, bottomLeft: {
MyBottomLeftView()
}, bottomRight: {
MyBottomRightView()
}) {
MyHandle()
}
```## Examples
Copy and Paste this I have added Named pictures for how the views should look, Im using dark mode so light mode colors may look different.
| HPart | VPart | GridPart | NestGrids | Mixed |
|-------------------------|-------------------------|-------------------------------|----------------------------------------|-----------------------------|
| ![HPart](/hExample.png) | ![VPart](/vExample.png) | ![GridPart](/gridExample.png) | ![Nested Grid](/nestedGridExample.png) | ![Mixed](/nestedExample.png) |``` Swift
import SwiftUI
import PartitionKitstruct ContentView: View {
var vExample: some View {
VPart(top: {
RoundedRectangle(cornerRadius: 25).foregroundColor(.purple)
}) {
Circle().foregroundColor(.yellow)
}
}
var hExample: some View {
HPart(left: {
RoundedRectangle(cornerRadius: 10).foregroundColor(.blue)
}) {
Circle().foregroundColor(.orange)
}
}
var nestedExample: some View {
VPart(top: {
hExample
}) {
vExample
}
}
var gridExample: some View {
GridPart(topLeft: {
RoundedRectangle(cornerRadius: 25).foregroundColor(.purple)
}, topRight: {
Circle().foregroundColor(.yellow)
}, bottomLeft: {
Circle().foregroundColor(.green)
}) {
RoundedRectangle(cornerRadius: 25).foregroundColor(.blue)
}
}
var nestedGridsExample: some View {
GridPart(topLeft: {
gridExample
}, topRight: {
gridExample
}, bottomLeft: {
gridExample
}) {
gridExample
}
}
var body: some View {
nestedExample
}
}struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
```## Todo
* Add in constraints so that partitions will not cause negative frame values that invert the views when the handle is dragged beyond the frame of the container
* Add more customizability to initial layouts
* Add a `List` Style grid collection layout that can be initiated with a list of Identifiable data elements.
* General cleanup, some stuff was not meant to be left in, i will find it at some point.