diff --git a/PullToRefreshSample/PullToRefreshSample.xcodeproj/project.pbxproj b/PullToRefreshSample/PullToRefreshSample.xcodeproj/project.pbxproj index 607ee0c..19fe0a0 100644 --- a/PullToRefreshSample/PullToRefreshSample.xcodeproj/project.pbxproj +++ b/PullToRefreshSample/PullToRefreshSample.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 27C8B4552BC0038900A62E0B /* CircularProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27C8B4542BC0038900A62E0B /* CircularProgressView.swift */; }; A51D6A4F2B83DE8000E44E19 /* PullToRefreshSampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = A51D6A4E2B83DE8000E44E19 /* PullToRefreshSampleApp.swift */; }; A51D6A612B83E0E800E44E19 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A51D6A5E2B83E0E800E44E19 /* Assets.xcassets */; }; A51D6A622B83E0E800E44E19 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A51D6A602B83E0E800E44E19 /* Preview Assets.xcassets */; }; @@ -23,6 +24,7 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 27C8B4542BC0038900A62E0B /* CircularProgressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircularProgressView.swift; sourceTree = ""; }; A51D6A4B2B83DE8000E44E19 /* PullToRefreshSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PullToRefreshSample.app; sourceTree = BUILT_PRODUCTS_DIR; }; A51D6A4E2B83DE8000E44E19 /* PullToRefreshSampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PullToRefreshSampleApp.swift; sourceTree = ""; }; A51D6A5C2B83DE9B00E44E19 /* PullToRefreshSwiftUI */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = PullToRefreshSwiftUI; path = ..; sourceTree = ""; }; @@ -115,6 +117,7 @@ A5BA6BAE2B870D0100DAE39C /* ListContentView.swift */, A5288C5F2BA6B45A0033D0AE /* CircleAnimationWithProgressView.swift */, A5288C612BA6B4820033D0AE /* CircleAnimationWithRepeatView.swift */, + 27C8B4542BC0038900A62E0B /* CircularProgressView.swift */, ); path = UI; sourceTree = ""; @@ -212,6 +215,7 @@ A5BA6BAF2B870D0100DAE39C /* ListContentView.swift in Sources */, A51D6A4F2B83DE8000E44E19 /* PullToRefreshSampleApp.swift in Sources */, A5288C602BA6B45A0033D0AE /* CircleAnimationWithProgressView.swift in Sources */, + 27C8B4552BC0038900A62E0B /* CircularProgressView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/PullToRefreshSample/PullToRefreshSampleiOS/UI/CircularProgressView.swift b/PullToRefreshSample/PullToRefreshSampleiOS/UI/CircularProgressView.swift new file mode 100644 index 0000000..8a53dec --- /dev/null +++ b/PullToRefreshSample/PullToRefreshSampleiOS/UI/CircularProgressView.swift @@ -0,0 +1,34 @@ +import SwiftUI + +struct CircularProgressView: View { + + private let tintColor: Color + private let dashesesCount: Int + private let size: CGFloat + private let totalDashesCount = 8 + + init(progress: CGFloat, tintColor: Color = .secondary, size: CGFloat = 20.0) { + self.dashesesCount = Int(CGFloat(totalDashesCount) * progress) + self.tintColor = tintColor + self.size = size + } + + var body: some View { + ZStack { + ForEach(0..