Skip to content

Commit

Permalink
Add basic example
Browse files Browse the repository at this point in the history
  • Loading branch information
aheze committed Sep 27, 2022
1 parent ec68474 commit 4e6f105
Show file tree
Hide file tree
Showing 7 changed files with 141 additions and 41 deletions.
16 changes: 16 additions & 0 deletions Example/PrismExample/PrismExample.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@
3C35DD3728E28269006B7A47 /* Glass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C35DD3628E28269006B7A47 /* Glass.swift */; };
3C35DD3A28E2846D006B7A47 /* Slime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C35DD3928E2846D006B7A47 /* Slime.swift */; };
3C35DD3C28E286A4006B7A47 /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C35DD3B28E286A4006B7A47 /* Utilities.swift */; };
3C35DD3E28E28800006B7A47 /* Transform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C35DD3D28E28800006B7A47 /* Transform.swift */; };
3C35DD4028E28804006B7A47 /* Basic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C35DD3F28E28804006B7A47 /* Basic.swift */; };
3C35DD4228E28818006B7A47 /* Columns.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C35DD4128E28818006B7A47 /* Columns.swift */; };
3C35DD4428E28827006B7A47 /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C35DD4328E28827006B7A47 /* Models.swift */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
Expand All @@ -41,6 +45,10 @@
3C35DD3628E28269006B7A47 /* Glass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Glass.swift; sourceTree = "<group>"; };
3C35DD3928E2846D006B7A47 /* Slime.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Slime.swift; sourceTree = "<group>"; };
3C35DD3B28E286A4006B7A47 /* Utilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Utilities.swift; sourceTree = "<group>"; };
3C35DD3D28E28800006B7A47 /* Transform.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Transform.swift; sourceTree = "<group>"; };
3C35DD3F28E28804006B7A47 /* Basic.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Basic.swift; sourceTree = "<group>"; };
3C35DD4128E28818006B7A47 /* Columns.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Columns.swift; sourceTree = "<group>"; };
3C35DD4328E28827006B7A47 /* Models.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Models.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -76,6 +84,7 @@
isa = PBXGroup;
children = (
3C35DD1328E232E0006B7A47 /* PrismExampleApp.swift */,
3C35DD4328E28827006B7A47 /* Models.swift */,
3C35DD2D28E261DE006B7A47 /* ViewModel.swift */,
3C35DD1528E232E0006B7A47 /* ContentView.swift */,
3C35DD3B28E286A4006B7A47 /* Utilities.swift */,
Expand Down Expand Up @@ -120,7 +129,10 @@
3C35DD3828E283FA006B7A47 /* Showcase */ = {
isa = PBXGroup;
children = (
3C35DD3F28E28804006B7A47 /* Basic.swift */,
3C35DD3928E2846D006B7A47 /* Slime.swift */,
3C35DD3D28E28800006B7A47 /* Transform.swift */,
3C35DD4128E28818006B7A47 /* Columns.swift */,
);
path = Showcase;
sourceTree = "<group>";
Expand Down Expand Up @@ -203,15 +215,19 @@
files = (
3C35DD2928E25D53006B7A47 /* Color.swift in Sources */,
3C35DD3A28E2846D006B7A47 /* Slime.swift in Sources */,
3C35DD4028E28804006B7A47 /* Basic.swift in Sources */,
3C35DD3528E27FD5006B7A47 /* Image.swift in Sources */,
3C35DD1628E232E0006B7A47 /* ContentView.swift in Sources */,
3C35DD3E28E28800006B7A47 /* Transform.swift in Sources */,
3C35DD2728E25C79006B7A47 /* DetailView.swift in Sources */,
3C35DD1428E232E0006B7A47 /* PrismExampleApp.swift in Sources */,
3C35DD3C28E286A4006B7A47 /* Utilities.swift in Sources */,
3C35DD2E28E261DE006B7A47 /* ViewModel.swift in Sources */,
3C35DD3128E27CEE006B7A47 /* GalleryCardView.swift in Sources */,
3C35DD4428E28827006B7A47 /* Models.swift in Sources */,
3C35DD2C28E25DFD006B7A47 /* GalleryView.swift in Sources */,
3C35DD3728E28269006B7A47 /* Glass.swift in Sources */,
3C35DD4228E28818006B7A47 /* Columns.swift in Sources */,
3C35DD3328E27E19006B7A47 /* Gradient.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand Down
6 changes: 5 additions & 1 deletion Example/PrismExample/PrismExample/Gallery/GalleryView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import Prism
import SwiftUI

enum ExampleKind: String {
case basic = "Basic"
case slime = "Slime"

case color = "Color"
Expand All @@ -28,8 +29,9 @@ struct GalleryView: View {
var body: some View {
LazyVGrid(columns: columns, spacing: 8) {
Section {
SlimeGalleryView(model: model)
BasicGalleryView(model: model)

SlimeGalleryView(model: model)
} header: {
Text("Showcase")
.foregroundColor(UIColor.secondaryLabel.color)
Expand All @@ -56,6 +58,8 @@ struct GalleryView: View {
.padding(.horizontal, 20)
.navigationDestination(for: ExampleKind.self) { kind in
switch kind {
case .basic:
BasicDetailView()
case .slime:
SlimeDetailView()

Expand Down
15 changes: 15 additions & 0 deletions Example/PrismExample/PrismExample/Models.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
//
// Models.swift
// PrismExample
//
// Created by A. Zheng (github.com/aheze) on 9/26/22.
// Copyright © 2022 A. Zheng. All rights reserved.
//

import Prism
import SwiftUI

struct DisplayedPrismConfiguration: Identifiable {
let id = UUID()
var configuration: PrismConfiguration
}
46 changes: 46 additions & 0 deletions Example/PrismExample/PrismExample/Showcase/Basic.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
//
// Basic.swift
// PrismExample
//
// Created by A. Zheng (github.com/aheze) on 9/26/22.
// Copyright © 2022 A. Zheng. All rights reserved.
//

import Prism
import SwiftUI

struct BasicGalleryView: View {
@ObservedObject var model: ViewModel
@State var configuration = PrismConfiguration(extrusion: 60)

var body: some View {
GalleryCardView(model: model, kind: .basic) {
PrismView(configuration: configuration) {
Color.blue
} left: {
Color.red
} right: {
Color.green
}
.frame(minHeight: 220)
.offset(y: 20)
}
}
}

struct BasicDetailView: View {
@State var configuration = PrismConfiguration(extrusion: 60)

var body: some View {
PrismCanvas(tilt: configuration.tilt) {
PrismView(configuration: configuration) {
Color.blue
} left: {
Color.red
} right: {
Color.green
}
}
.navigationTitle("Basic")
}
}
10 changes: 10 additions & 0 deletions Example/PrismExample/PrismExample/Showcase/Columns.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
//
// Columns.swift
// PrismExample
//
// Created by A. Zheng (github.com/aheze) on 9/26/22.
// Copyright © 2022 A. Zheng. All rights reserved.
//


import Foundation
79 changes: 39 additions & 40 deletions Example/PrismExample/PrismExample/Showcase/Slime.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,6 @@
import Prism
import SwiftUI

struct DisplayedPrismConfiguration: Identifiable {
let id = UUID()
var configuration: PrismConfiguration
}

struct SlimeGalleryView: View {
@ObservedObject var model: ViewModel

Expand Down Expand Up @@ -42,7 +37,7 @@ struct SlimeGalleryView: View {
struct SlimeDetailView: View {
static let defaultLength = CGFloat(100)
static let defaultExtrusion = CGFloat(60)

@State var displayedConfigurations: [DisplayedPrismConfiguration] = [
.init(
configuration: .init(
Expand Down Expand Up @@ -104,47 +99,51 @@ struct SlimePrismView: View {
}
.buttonStyle(PressedButtonStyle(isPressed: $isPressed))
.onChange(of: isPressed) { newValue in
if newValue {
animate(isPressed: newValue)
}
}

func animate(isPressed: Bool) {
if isPressed {
withAnimation(
.spring(response: 0.21, dampingFraction: 0.5, blendDuration: 1)
) {
configuration.extrusion *= 0.2
}
} else {
withAnimation(
.spring(response: 0.4, dampingFraction: 0.7, blendDuration: 1)
) {
configuration.extrusion = SlimeDetailView.defaultLength * 3 / 2
configuration.size = .init(
width: SlimeDetailView.defaultLength * 2 / 5,
height: SlimeDetailView.defaultLength * 2 / 5
)
}

DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {
withAnimation(
.spring(response: 0.21, dampingFraction: 0.5, blendDuration: 1)
.spring(response: 0.3, dampingFraction: 0.7, blendDuration: 1)
) {
configuration.extrusion *= 0.2
configuration.levitation = SlimeDetailView.defaultLength * 3 / 2
configuration.extrusion = 10
}
} else {
}

DispatchQueue.main.asyncAfter(deadline: .now() + 0.293) {
withAnimation(
.spring(response: 0.4, dampingFraction: 0.7, blendDuration: 1)
.spring(response: 0.7, dampingFraction: 0.7, blendDuration: 1)
) {
configuration.extrusion = SlimeDetailView.defaultLength * 3 / 2
configuration.size = .init(
width: SlimeDetailView.defaultLength * 2 / 5,
height: SlimeDetailView.defaultLength * 2 / 5
)
}

DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {
withAnimation(
.spring(response: 0.3, dampingFraction: 0.7, blendDuration: 1)
) {
configuration.levitation = SlimeDetailView.defaultLength * 3 / 2
configuration.extrusion = 10
}
}

DispatchQueue.main.asyncAfter(deadline: .now() + 0.293) {
withAnimation(
.spring(response: 0.7, dampingFraction: 0.7, blendDuration: 1)
) {
configuration.size = .init(width: SlimeDetailView.defaultLength, height: SlimeDetailView.defaultLength)
configuration.levitation = 0
}
configuration.size = .init(width: SlimeDetailView.defaultLength, height: SlimeDetailView.defaultLength)
configuration.levitation = 0
}
}

DispatchQueue.main.asyncAfter(deadline: .now() + 0.66) {
withAnimation(
.spring(response: 0.6, dampingFraction: 0.7, blendDuration: 1)
) {
configuration.extrusion = SlimeDetailView.defaultExtrusion
}
DispatchQueue.main.asyncAfter(deadline: .now() + 0.66) {
withAnimation(
.spring(response: 0.6, dampingFraction: 0.7, blendDuration: 1)
) {
configuration.extrusion = SlimeDetailView.defaultExtrusion
}
}
}
Expand Down
10 changes: 10 additions & 0 deletions Example/PrismExample/PrismExample/Showcase/Transform.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
//
// Transform.swift
// PrismExample
//
// Created by A. Zheng (github.com/aheze) on 9/26/22.
// Copyright © 2022 A. Zheng. All rights reserved.
//


import Foundation

0 comments on commit 4e6f105

Please sign in to comment.