View WebView.swift
import SwiftUI | |
import WebKit | |
import Combine | |
class WebViewData: ObservableObject { | |
@Published var loading: Bool = false | |
@Published var scrollPercent: Float = 0 | |
@Published var url: URL? = nil | |
@Published var urlBar: String = "https://nasa.gov" | |
View squared-triangle.swift
struct Triangle: View { | |
let direction: Direction | |
let color: Color | |
init(_ direction: Direction = .down, _ color: Color = .black) { | |
self.direction = direction | |
self.color = color | |
} | |
var body: some View { |
View SwiftUI-view-to-UIImage.swift
// | |
// ContentView.swift | |
// Grabber | |
// | |
// SwiftUI-Lab | |
// | |
// For more information on the techniques used in this example, check | |
// The Power of the Hosting+Representable Combo (https://swiftui-lab.com/a-powerful-combo/) | |
import SwiftUI |
View state-changes.swift
// Safely Modifying The View State (SwiftUI) | |
// https://swiftui-lab.com | |
// https://swiftui-lab.com/state-changes | |
import SwiftUI | |
struct CustomView: View { | |
var body: some View { | |
NavigationView { |
View TripleToggleStyle.swift
// SwiftUI Custom Styles (TripleToggleStyle) | |
// https://swiftui-lab.com | |
// https://swiftui-lab.com/custom-styling | |
import SwiftUI | |
// MARK: - TripleToggle View | |
public struct TripleToggle: View { | |
@Environment(\.tripleToggleStyle) var style: AnyTripleToggleStyle | |
View transiftion-cross-effect.swift
// Advanced SwiftUI Transitions | |
// https://swiftui-lab.com | |
// https://swiftui-lab.com/advanced-transitions | |
import SwiftUI | |
struct CrossEffectDemo: View { | |
let animationDuration: Double = 2 | |
let images = ["photo1", "photo2", "photo3", "photo4"] | |
@State private var idx = 0 |
View transiftion-present-dismiss.swift
// Advanced SwiftUI Transitions | |
// https://swiftui-lab.com | |
// https://swiftui-lab.com/advanced-transitions | |
import SwiftUI | |
struct GeometryEffectTransitionsDemo: View { | |
@State private var show = false | |
var body: some View { |
View alignment-guides-tool.swift
// The SwiftUI Lab | |
// Website: https://swiftui-lab.com | |
// Article: https://swiftui-lab.com/alignment-guides | |
import SwiftUI | |
class Model: ObservableObject { | |
@Published var minimumContainer = true | |
@Published var extendedTouchBar = false | |
@Published var twoPhases = true |
View alignment-guides-implicit.swift
// The SwiftUI Lab | |
// Website: https://swiftui-lab.com | |
// Article: https://swiftui-lab.com/alignment-guides | |
import SwiftUI | |
struct ContentView: View { | |
@State private var alignment: HorizontalAlignment = .leading | |
var body: some View { |
View alignment-guides-animation.swift
// The SwiftUI Lab | |
// Website: https://swiftui-lab.com | |
// Article: https://swiftui-lab.com/alignment-guides | |
import SwiftUI | |
struct ContentView: View { | |
@State var position: Int = 0 | |
var body: some View { |
NewerOlder