https://github.com/eunchan2815/flexiblekit
Lightweight, reusable SwiftUI components for flexible layouts and adaptive UI.
https://github.com/eunchan2815/flexiblekit
alginment autopadding backbutton cornershape flexible ios stack swift swiftui trigger webview
Last synced: 19 days ago
JSON representation
Lightweight, reusable SwiftUI components for flexible layouts and adaptive UI.
- Host: GitHub
- URL: https://github.com/eunchan2815/flexiblekit
- Owner: eunchan2815
- Created: 2025-04-05T14:08:07.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-05-13T06:12:23.000Z (10 months ago)
- Last Synced: 2025-05-13T06:35:19.480Z (10 months ago)
- Topics: alginment, autopadding, backbutton, cornershape, flexible, ios, stack, swift, swiftui, trigger, webview
- Language: Swift
- Homepage:
- Size: 12.7 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
> SwiftUI is great. But layout isn't.
**FlexibleKit** is a SwiftUI utility library that offers flexible layouts, custom back buttons, adaptive corners, triggers, and lightweight webviews. Easily drop into any SwiftUI project to speed up development.
---
## ๐ผ Preview

---
## ๐ฆ Installation
### Swift Package Manager
**Xcode:**
Paste:
**Or use `Package.swift`:**
```swift
.package(url: "https://github.com/YourUsername/FlexibleKit.git", .upToNextMajor(from: "1.0.1"))
```
## โ
Features
### ๐ Alignment
๊ฐ๋จํ ์ ๋ ฌ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ข์ธก, ์ฐ์ธก, ์ค์ ์ ๋ ฌ์ HStack ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋์ด ์์ต๋๋ค.
```swift
Text("์ผ์ชฝ ์ ๋ ฌ")
.alignLeft()
Text("์ค๋ฅธ์ชฝ ์ ๋ ฌ")
.alignRight()
Text("์ค์ ์ ๋ ฌ")
.alignCenter()
```
### ๐ Back Button
์ ์ฐํ SwiftUI BackButton์ ์ ๊ณตํฉ๋๋ค. ์์๊ณผ ์ค๋ช
, ์ก์
์ ์ฝ๊ฒ ์ค์ ํ ์ ์์ต๋๋ค.
๋ํ swipe๋ฅผ ํตํ ๋ค๋ก๊ฐ๊ธฐ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
```swift
struct TestView: View {
@Environment(\.dismiss) var dismiss
var body: some View {
NavigationStack {
Text("hello")
}
.backButton(description: "๋ค๋ก๊ฐ๊ธฐ", color: .black) {
dismiss()
}
}
}
```
### ๐ฏ Rounded Corners
ํน์ ์ฝ๋๋ง ๋ผ์ด๋ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ์ ํธ์
๋๋ค. .topLeft, .bottomRight ๋ฑ ์ ํ์ ์ผ๋ก ์ ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
```swift
struct TestView: View {
var body: some View {
VStack {
Text("hello")
.frame(width: 300, height: 300)
.background(.red)
.roundedCorners(30, corners: [.topLeft, .bottomLeft, .bottomRight])
}
}
}
```
### ๐ฆ Flexible Stacks
FlexibleHStack, FlexibleVStack์ ํตํด ํจ๋ฉ๊ณผ ์ ๋ ฌ์ด ํฌํจ๋ ์คํ์ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
```swift
FlexibleHStack(spacing: 12, paddingEdges: [.leading, .trailing]) {
Text("์์ดํ
1")
Text("์์ดํ
2")
}
FlexibleVStack(alignment: .center, paddingLength: 8) {
Text("์")
Text("์๋")
}
```
### โฑ Trigger Delay
์ผ์ ์๊ฐ ํ ์ํ๋ฅผ ๋ฐ๊พธ๋ ํธ๋ฆฌ๊ฑฐ ์ ํธ์
๋๋ค. Binding์ ์ผ์ ์๊ฐ ์ดํ true๋ก ๋ณ๊ฒฝํฉ๋๋ค.
```swift
struct LaunchView: View {
@State private var isActive = false
var body: some View {
Group {
if isActive {
TestView2()
} else {
VStack {
Text("๐ FlexibleKit")
.font(.largeTitle.bold())
Text("Launching...")
.foregroundColor(.gray)
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color.white)
.delayedTrigger(to: $isActive, after: 2)
}
}
}
}
```
### ๐ WebView
SwiftUI์์ ๊ฐ๋จํ๊ฒ WKWebView๋ฅผ ๋์ฐ๊ณ ์ถ์ ๋ ์ฌ์ฉํฉ๋๋ค. URL๋ง ๋๊ธฐ๋ฉด ๋ฉ๋๋ค.
```swift
FlexibleWebView(url: "https://apple.com")
```