RingProgressViewStyle

0.2.0

RingProgressViewStyle is a library that adds a ring style to SwiftUI's ProgressViewStyle.
kkebo/RingProgressViewStyle

What's New

0.2.0

2022-08-20T16:22:39Z

RingProgressViewStyle

This is a library that adds a ring style to SwiftUI's ProgressViewStyle. The default apperance is based on the .linear style of ProgressViewStyle, but you can customize colors and a stroke style.

Example

ContentView.swift

preview

Motivation

The .circular style already exists in ProgressViewStyle, but it's just an indicator, not a progress bar. So basically, you have to implement that by yourself.

Fortunately, if you google "SwiftUI progress ring", you can see a number of code examples. Almost all of them looks like:

Circle()
    .trim(from: 0, to: value)
    .stroke(...)
    .rotationEffect(.degrees(-90))

However, when you try to specify its size by .frame(width: ..., height: ...), its stroke line overflows its frame.

To prevent this, I often use strokeBorder instead of stroke.

Circle()
    .trim(from: 0, to: value)
    .strokeBorder(...)
    .rotationEffect(.degrees(-90))

But it occurs a compilation error because trim returns some Shape that doesn't conform to InsettableShape but strokeBorder is a method of InsettableShape.

So I created a solution.

How to Use

Add this repository to your package dependencies in your app, and select the "RingProgressViewStyle" product. The "Showcase" product is an example app for Swift Playgrounds, so you don't need it when you want to use this package only as a library.

Supported Platforms

  • iOS 14+
  • macOS 11+

Description

  • Swift Tools 5.6.0
View More Packages from this Author

Dependencies

  • None
Last updated: Wed Oct 30 2024 09:57:52 GMT-0900 (Hawaii-Aleutian Daylight Time)