Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save henryheleine/69ff1395b1900cdb9c25b51f49911486 to your computer and use it in GitHub Desktop.

Select an option

Save henryheleine/69ff1395b1900cdb9c25b51f49911486 to your computer and use it in GitHub Desktop.

Revisions

  1. @swiftui-lab swiftui-lab revised this gist Aug 26, 2019. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions refreshable-scrollview-example.swift
    Original file line number Diff line number Diff line change
    @@ -17,9 +17,9 @@ struct ContentView: View {

    RefreshableScrollView(height: 70, refreshing: self.$model.loading) {

    DogView(dog: self.model.dog).padding(30).background(Color.white)
    DogView(dog: self.model.dog).padding(30).background(Color(UIColor.systemBackground))

    }.background(Color(white: 0.95))
    }.background(Color(UIColor.secondarySystemBackground))
    }
    }

    @@ -28,7 +28,7 @@ struct ContentView: View {

    var body: some View {
    VStack {
    Color.white.frame(height: 30).overlay(Text(self.title))
    Color(UIColor.systemBackground).frame(height: 30).overlay(Text(self.title))
    Color(white: 0.5).frame(height: 3)
    }
    }
  2. @swiftui-lab swiftui-lab revised this gist Aug 19, 2019. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions refreshable-scrollview-example.swift
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,6 @@
    // Authoer: The SwiftUI Lab
    // Full article: https://swiftui-lab.com/scrollview-pull-to-refresh/

    import SwiftUI

    struct ContentView: View {
  3. @swiftui-lab swiftui-lab created this gist Aug 19, 2019.
    78 changes: 78 additions & 0 deletions refreshable-scrollview-example.swift
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,78 @@
    import SwiftUI

    struct ContentView: View {
    @ObservedObject var model = MyModel()
    @State private var alternate: Bool = true

    let array = Array<String>(repeating: "Hello", count: 100)
    let transaction = Transaction(animation: .easeInOut(duration: 2.0))

    var body: some View {

    return VStack(spacing: 0) {
    HeaderView(title: "Dog Roulette")

    RefreshableScrollView(height: 70, refreshing: self.$model.loading) {

    DogView(dog: self.model.dog).padding(30).background(Color.white)

    }.background(Color(white: 0.95))
    }
    }

    struct HeaderView: View {
    var title = ""

    var body: some View {
    VStack {
    Color.white.frame(height: 30).overlay(Text(self.title))
    Color(white: 0.5).frame(height: 3)
    }
    }
    }

    struct DogView: View {
    let dog: Dog

    var body: some View {
    VStack {
    Image(dog.picture, defaultSystemImage: "questionmark.circle.fill")
    .resizable()
    .aspectRatio(contentMode: .fit)
    .frame(height: 160)
    .clipShape(Circle())
    .overlay(Circle().stroke(Color.white, lineWidth: 2))
    .padding(2)
    .overlay(Circle().strokeBorder(Color.black.opacity(0.1)))
    .shadow(radius: 3)
    .padding(4)

    Text(dog.name).font(.largeTitle).fontWeight(.bold)
    Text(dog.origin).font(.headline).foregroundColor(.blue)
    Text(dog.description)
    .lineLimit(nil)
    .frame(height: 1000, alignment: .top)
    .padding(.top, 20)
    }
    }
    }
    }

    extension Image {
    init(_ name: String, defaultImage: String) {
    if let img = UIImage(named: name) {
    self.init(uiImage: img)
    } else {
    self.init(defaultImage)
    }
    }

    init(_ name: String, defaultSystemImage: String) {
    if let img = UIImage(named: name) {
    self.init(uiImage: img)
    } else {
    self.init(systemName: defaultSystemImage)
    }
    }

    }