{"id":13496745,"url":"https://github.com/CSolanaM/SkeletonUI","last_synced_at":"2025-03-28T19:30:58.067Z","repository":{"id":38359918,"uuid":"208340053","full_name":"CSolanaM/SkeletonUI","owner":"CSolanaM","description":"☠️ Elegant skeleton loading animation in lightweight SwiftUI","archived":false,"fork":false,"pushed_at":"2024-08-10T11:37:45.000Z","size":1201,"stargazers_count":900,"open_issues_count":7,"forks_count":54,"subscribers_count":8,"default_branch":"develop","last_synced_at":"2025-03-25T10:09:33.622Z","etag":null,"topics":["animation","cocoapods","combine","gradient","ios","loading","loading-animation","loading-indicator","loading-spinner","macos","placeholder","placeholder-animation","skeleton","skeleton-animation","skeletonization","swift","swift-package-manager","swiftui","tvos","watchos"],"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/CSolanaM.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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},"funding":{"github":["CSolanaM"]}},"created_at":"2019-09-13T20:18:39.000Z","updated_at":"2025-03-22T21:23:09.000Z","dependencies_parsed_at":"2024-06-20T23:29:48.607Z","dependency_job_id":"f63138e1-79dc-4273-9304-bbdfd2ea26e9","html_url":"https://github.com/CSolanaM/SkeletonUI","commit_stats":{"total_commits":92,"total_committers":9,"mean_commits":"10.222222222222221","dds":"0.17391304347826086","last_synced_commit":"f025e9ba5d051374d7344efa8859df5b9399a181"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSolanaM%2FSkeletonUI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSolanaM%2FSkeletonUI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSolanaM%2FSkeletonUI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSolanaM%2FSkeletonUI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CSolanaM","download_url":"https://codeload.github.com/CSolanaM/SkeletonUI/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246088397,"owners_count":20721679,"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","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":["animation","cocoapods","combine","gradient","ios","loading","loading-animation","loading-indicator","loading-spinner","macos","placeholder","placeholder-animation","skeleton","skeleton-animation","skeletonization","swift","swift-package-manager","swiftui","tvos","watchos"],"created_at":"2024-07-31T19:01:58.575Z","updated_at":"2025-03-28T19:30:57.488Z","avatar_url":"https://github.com/CSolanaM.png","language":"Swift","readme":"\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./Assets/headerdark.gif\"\u003e\n  \u003cimg src=\"./Assets/header.gif\"\u003e\n\u003c/picture\u003e\n\u003cp align='center'\u003e\n\t\u003cimg src='https://github.com/CSolanaM/SkeletonUI/workflows/build/badge.svg'\u003e\n\t\u003cimg src='https://github.com/CSolanaM/SkeletonUI/workflows/test/badge.svg'\u003e\n        \u003ca href=\"https://codecov.io/gh/CSolanaM/SkeletonUI\"\u003e\u003cimg src=\"https://codecov.io/gh/CSolanaM/SkeletonUI/branch/master/graph/badge.svg\" /\u003e\u003c/a\u003e\n\t\u003cimg src='https://img.shields.io/cocoapods/p/SkeletonUI'\u003e\n\t\u003cimg src='https://img.shields.io/github/v/tag/CSolanaM/SkeletonUI?color=lightGray\u0026label=version'\u003e\n\t\u003cimg src='https://img.shields.io/github/license/CSolanaM/SkeletonUI?color=lightGray'\u003e\n\t\u003ca href='https://twitter.com/CSolanaM'\u003e\u003cimg src='https://img.shields.io/badge/twitter-@CSolanaM-lightGray.svg?style=flat\u0026label=contact'\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nSkeletonUI aims to bring an elegant, declarative syntax to skeleton loading animations. Get rid of loading screens or spinners and start using skeletons to represent final content shapes.\n\n# Requirements :gear:\n\n- macOS 10.15.\n- Xcode 11.0.\n- Swift 5.0.\n\n# Supported Platforms :iphone:\n\n- iOS 13.0.\n- tvOS 13.0.\n- watchOS 6.0.\n- macOS 10.15.\n\n# Installation :computer:\n\n### Swift Package Manager\n[Swift Package Manager](https://swift.org/package-manager/) is a tool for automating the distribution of Swift code and is integrated into the `swift` compiler. Once you have your Swift package set up, adding `SkeletonUI` as a dependency is as easy as adding it to the `dependencies` value of your `Package.swift`.\n\n```swift\n  dependencies: [\n  .package(url: \"https://github.com/CSolanaM/SkeletonUI.git\", .branch(\"master\"))\n  ]\n```\n\n### CocoaPods\n[CocoaPods](https://cocoapods.org) is a centralized dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate SkeletonUI into your Xcode project using CocoaPods, specify it in your `Podfile`:\n\n```ruby\npod 'SkeletonUI'\n```\n\n# Features :sparkles:\n\n- [x] SwiftUI simple, declarative syntax.\n- [x] Super easy and simple to set up.\n- [x] All Views are skeletonables.\n- [x] Fully customizable.\n- [x] Universal (iPhone, iPad, iPod, Apple TV, Apple Watch, Mac).\n- [x] SwiftUI ViewModifier power.\n- [x] Lightweight codebase.\n\n# Usage :rocket:\n\n### Basic one-liner:\n\n```swift\nimport SkeletonUI\nimport SwiftUI\n\nstruct UsersView: View {\n    @State var users = [String]()\n\n    var body: some View {\n        Text(\"Finished requesting \\(users.count) users!\")\n            .skeleton(with: users.isEmpty)\n            .onAppear {\n                DispatchQueue.main.asyncAfter(deadline: .now() + 5) {\n                    self.users = [\"John Doe\", \"Jane Doe\", \"James Doe\", \"Judy Doe\"]\n                }\n        }\n    }\n}\n```\n\n### Advanced customization:\n\n```swift\nimport SkeletonUI\nimport SwiftUI\n\nstruct User: Identifiable {\n    let id = UUID()\n    let name: String\n}\n\nstruct UsersView: View {\n    @State var users = [User]()\n\n    var body: some View {\n        SkeletonList(with: users, quantity: 6) { loading, user in\n            Text(user?.name)\n                .skeleton(with: loading,\n                          animation: .pulse(),\n                          appearance: .solid(color: .red, background: .blue),\n                          shape: .rectangle,\n                          lines: 3,\n                          scales: [1: 0.5])\n        }\n        .onAppear {\n            DispatchQueue.main.asyncAfter(deadline: .now() + 5) {\n                self.users = [User(name: \"John Doe\"),\n                              User(name: \"Jane Doe\"),\n                              User(name: \"James Doe\"),\n                              User(name: \"Judy Doe\")]\n            }\n        }\n    }\n}\n```\n\n# Change Log :calendar:\n\nSee [CHANGELOG.md](https://github.com/CSolanaM/SkeletonUI/blob/master/CHANGELOG.md) for details.\n\n# Contributing :tada:\n\n- Suggest your idea as a [feature request](https://github.com/CSolanaM/SkeletonUI/issues/new?assignees=\u0026labels=\u0026template=feature_request.md\u0026title=) for this project.\n- Create a [bug report](https://github.com/CSolanaM/SkeletonUI/issues/new?assignees=\u0026labels=\u0026template=bug_report.md\u0026title=) to help us improve.\n- Propose your own fixes, suggestions and open a pull request with the changes.\n\nSee [CONTRIBUTING.md](https://github.com/CSolanaM/SkeletonUI/blob/master/CONTRIBUTING.md) for details.\n\n# Code of Conduct :speech_balloon:\n\nSee [CODE_OF_CONDUCT.md](https://github.com/CSolanaM/SkeletonUI/blob/master/CODE_OF_CONDUCT.md) for details.\n\n# Credits :speak_no_evil:\n\nSkeletonUI is owned and maintained by [CSolanaM](https://csolanam.io). You can follow me on Twitter at [@CSolanaM](https://twitter.com/CSolanaM) or contact me via [email](mailto:apps@csolanam.io) for project updates and releases.\n\n# License :mortar_board:\n\nSkeletonUI is released under the MIT license. See [LICENSE](https://github.com/CSolanaM/SkeletonUI/blob/master/LICENSE) for details.\n","funding_links":["https://github.com/sponsors/CSolanaM"],"categories":["Skeleton","Swift","四、开源库精选（解决80%开发场景，附核心优势）","UI"],"sub_categories":["Content","6. 加载与提示","Loading"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCSolanaM%2FSkeletonUI","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCSolanaM%2FSkeletonUI","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCSolanaM%2FSkeletonUI/lists"}