Skip to content

Instantly share code, notes, and snippets.

struct MyScrollView<Content: View>: UIViewRepresentable {
let axis: Axis
@ViewBuilder let content: () -> Content
class Coordinator: NSObject, UIScrollViewDelegate {
var hostingController: UIHostingController<Content>?
}
func makeCoordinator() -> Coordinator {
Coordinator()
import SwiftUI
// ...
SomeView()
.background(UIViewControllerLifecycleView(
onViewWillAppear: {
}, onViewDidAppear: {
}, onViewWillDisappear: {
}, onViewDidDisappear: {
})
import SwiftUI
struct ContentView: View {
@State var isShrinked = false
@State var response: CGFloat = 1
@State var dampingFraction: CGFloat = 0.5
@State var blendDuration: CGFloat = 0
var body: some View {
VStack {
import SwiftUI
struct ContentView: View {
var body: some View {
Button(action: {
}) {
Text("Button")
.padding()
.foregroundColor(.white)
@mishimay
mishimay / GetChildViewSize.swift
Last active May 15, 2022 07:54
How to get child view size in SwiftUI View
import SwiftUI
struct ContentView: View {
@State var size: CGSize = .zero
var body: some View {
VStack {
Text(size.debugDescription)
ChildView()
}
func fetchData(url: URL) async throws -> Data {
let cancellables = NSMutableSet()
return try await withTaskCancellationHandler {
try await withCheckedThrowingContinuation { continuation in
let cancellable = APIClient()
.request(url: url)
.sink { completion in
switch completion {
case .failure(let error):
continuation.resume(throwing: error)
@mishimay
mishimay / AppearanceProtocol.swift
Last active May 7, 2022 02:43
A protocol property in SwiftUI View
import SwiftUI
protocol AppearanceProtocol {
var text: String { get }
}
struct MyView<Appearance: AppearanceProtocol>: View {
let appearance: Appearance
var body: some View {
@mishimay
mishimay / ContainerView.swift
Last active May 7, 2022 02:44
How to use @ViewBuilder in SwiftUI View
import SwiftUI
struct ContainerView<Content: View>: View {
@ViewBuilder let content: Content
var body: some View {
content
}
}
@mishimay
mishimay / TwoColumns.swift
Created April 19, 2022 07:23
Two columns in LazyVGrid by SwiftUI
import SwiftUI
struct ContentView: View {
var body: some View {
ScrollView {
LazyVGrid(columns: [.init(.flexible()), .init(.flexible())]) {
ForEach((0...79), id: \.self) {
let codepoint = $0 + 0x1f600
let emoji = String(Character(UnicodeScalar(codepoint)!))
Text("\(emoji)")
let appearance = UITabBarAppearance()
appearance.configureWithTransparentBackground()
appearance.backgroundColor = backgroundColor
appearance.backgroundImage = backgroundImage
[appearance.stackedLayoutAppearance,
appearance.compactInlineLayoutAppearance,
appearance.inlineLayoutAppearance]
.forEach {
$0.selected.iconColor = selectedColor