Last active
August 16, 2025 09:35
-
-
Save byJeevan/f67485bf380e86d4f87a723ac383827c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| SwiftUI Components & Extension that saves iOSDev time. | |
| ### UIKit is **EVENT-Driven** framework - We could reference each view in the hierarchy, update its appearance when the view is loaded or as a reaction on an event. | |
| ### SwiftUI is **Declarative, State Driven** framework - We cannot reference any view in the hierarchy, neither can we directly mutate a view as a reaction to an event. | |
| Instead, we mutate the state bound to the view. Delegates, target-actions, responder chain, KVO .. replaced with Closures & bindings. |
Author
Author
Debugging:
let _ = Self._printChanges()print statement to trace view lifecyclelet _ = print("Update XYZView")We use this print to trace whether the body of Particular view (eg. SpyView) is executed or not.
ref: https://sarunw.com/posts/how-to-do-print-debugging-in-swiftui/
Author
To make fullscreen view to fill entire screen:
ZStack {
Text("Hello").background(.yellow)
}
.frame(maxWidth: .infinity, maxHeight: .infinity) // this is important
.background(.blue)
Author
public extension View {
// Creates a outline border for text of having any font size.
func outlinedText(shadowColor: Color = .white, radius: CGFloat = 0, offset: CGFloat = 0.5) -> some View {
self
.shadow(color: shadowColor, radius: radius, x: offset, y: 0) // Right
.shadow(color: shadowColor, radius: radius, x: 0, y: offset) // Down
.shadow(color: shadowColor, radius: radius, x: -offset, y: 0) // Left
.shadow(color: shadowColor, radius: radius, x: 0, y: -offset) // Up
}
}
Author
Create Alert (system alert)
struct ContentView: View {
@State private var showAlert = false // 1
var body: some View {
VStack {
Button("Show Alert") {
showAlert = true // 2
}
}
// 3.
.alert("Important Message", isPresented: $showAlert) {
Button("OK", role: .cancel) { }
Button("Delete", role: .destructive) {
// handle delete action
}
} message: {
Text("This is an alert in SwiftUI.")
}
}
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
To make Content view as parameter. A better way to build Generic views.