{"id":16021467,"url":"https://github.com/kkebo/ringprogressviewstyle","last_synced_at":"2026-03-09T06:31:04.267Z","repository":{"id":63915552,"uuid":"526966310","full_name":"kkebo/RingProgressViewStyle","owner":"kkebo","description":"RingProgressViewStyle is a library that adds a ring style to SwiftUI's ProgressViewStyle.","archived":false,"fork":false,"pushed_at":"2025-07-17T16:31:29.000Z","size":652,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-08-16T08:57:53.687Z","etag":null,"topics":["ios","ipados","macos","swift","swiftui"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kkebo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-20T15:32:22.000Z","updated_at":"2025-07-17T16:31:33.000Z","dependencies_parsed_at":"2024-05-06T01:41:37.701Z","dependency_job_id":"70b65649-bbae-4163-b45a-a6d20c0564e0","html_url":"https://github.com/kkebo/RingProgressViewStyle","commit_stats":{"total_commits":18,"total_committers":2,"mean_commits":9.0,"dds":"0.11111111111111116","last_synced_commit":"2e80d243180962d2411142c7aabea8b82c085c87"},"previous_names":["kkebo/ringprogressviewstyle","kkk669/ringprogressviewstyle"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/kkebo/RingProgressViewStyle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kkebo%2FRingProgressViewStyle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kkebo%2FRingProgressViewStyle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kkebo%2FRingProgressViewStyle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kkebo%2FRingProgressViewStyle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kkebo","download_url":"https://codeload.github.com/kkebo/RingProgressViewStyle/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kkebo%2FRingProgressViewStyle/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271123353,"owners_count":24703210,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-19T02:00:09.176Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ios","ipados","macos","swift","swiftui"],"created_at":"2024-10-08T18:04:30.174Z","updated_at":"2025-12-11T22:58:43.558Z","avatar_url":"https://github.com/kkebo.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RingProgressViewStyle\n\n[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fkkebo%2FRingProgressViewStyle%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/kkebo/RingProgressViewStyle)\n[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fkkebo%2FRingProgressViewStyle%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/kkebo/RingProgressViewStyle)\n[![License](https://img.shields.io/github/license/kkebo/RingProgressViewStyle.svg)](LICENSE.txt)\n\nRingProgressViewStyle 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.\n\n## Example\n\n[Example.swiftpm](./Example.swiftpm/ContentView.swift) can be opened in Swift Playgrounds app or Xcode.\n\n![preview](preview.gif)\n\n## Motivation\n\nThe `.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.\n\nFortunately, if you google \"SwiftUI progress ring\", you can find a number of code examples. Almost all of them looks like:\n\n```swift\nCircle()\n    .trim(from: 0, to: value)\n    .stroke(...)\n    .rotationEffect(.degrees(-90))\n```\n\nHowever, when you try to specify its size by `.frame(width: ..., height: ...)`, its stroke line overflows its frame.\n\nTo prevent this, I often use `strokeBorder` instead of `stroke`.\n\n```swift\nCircle()\n    .trim(from: 0, to: value)\n    .strokeBorder(...)\n    .rotationEffect(.degrees(-90))\n```\n\nBut it occurs a compilation error because `trim` returns `some Shape` that doesn't conform to `InsettableShape` but `strokeBorder` is a method of `InsettableShape`.\n\nSo I created a solution.\n\n## How to Use\n\nAdd this repository to your package dependencies in your app.\n\n## Supported Platforms\n\n- iOS 14+\n- iPadOS 14+\n- macOS 11+\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkkebo%2Fringprogressviewstyle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkkebo%2Fringprogressviewstyle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkkebo%2Fringprogressviewstyle/lists"}