Visual component for hiding subviews for the period of loading content
Alternatives To Nkskeleton
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
24a month ago61August 11, 202247mitSwift
☠️ An elegant way to show users that something is happening and also prepare them to which contents they are awaiting
35 months ago32May 10, 20222mitSwift
⌛️A customizable animated gradient loading bar.
72 years ago6January 08, 2020mitSwift
💀 An easy way to create sliding CAGradientLayer animations! Works great for creating skeleton screens for loading content.
18 days ago10July 11, 20223mitSwift
☠️ Elegant skeleton loading animation in SwiftUI and Combine
1a year ago5October 06, 20192mitMakefile
Show pleasant loading view for your users 😍
13 years ago5October 22, 2018mitObjective-C
[OCSkeleton] - Make your loading view a little difference.
6 years ago3Kotlin
Marvelous sliding square loader view
5 years ago2October 09, 20171mitSwift
Beautiful animated placeholders for showing loading of data
Rn Content Loader73
2 years ago7May 28, 20204mitJavaScript
a react native content loader without expo using react native svg
6 years agomitSwift
iOS pod that adds a sliding gradient to simulate placeholder loading views.
Alternatives To Nkskeleton
Select To Compare

Alternative Project Comparisons


Swift Version License Platform

image image image



public class NKSkeleton {

  public init(configuration: NKSkeletonConfiguration, sourceView: UIView? = nil) 

    Show skeleton on `sourceView`
  public func show(on sourceView: UIView? = nil) 

    Hide skeleton on `sourceView`
  public func remove() 



public struct NKSkeletonConfiguration {

  /// The parameter indicates the need to play animation
  public var isAnimatable = false

  /// Sequence of colors to display the gradient
  public var colors = [UIColor.white.cgColor, UIColor.lightGray.cgColor]

  /// Gradient display type
  public var type: NKType = .axial

  /// The position of the beginning of the gradient vector
  public var initialPosition: NKInitialPosition = .topLeft

  /// The duration of one pass animation
  public var duration: CFTimeInterval = 0

  /// The level of subviews to be hidden by the skeleton, relative to the parent view
  public var subviewsLevel = 0

  public init()


public extension NKSkeletonConfiguration {

  /// Skeleton gradient type
  public enum NKType: Equatable {

      Using the parameter `.axial` gradient will be formed as a linear transition between the colors along the gradient vector
    case axial

      Using the parameter `.radial(Bool)` gradient will be formed as a radial transition between the colors from the starting point in all directions

      The passed `Bool` parameter is responsible for the direction of the animation.
      If `NKSkeletonConfiguration().isAnimatable = false` passed `Bool` parameter value will be ignored.

      If passed `Bool` parameter is `true` animation will move from `NKSkeletonConfiguration().initialPosition' in all directions, else - from all directions to `NKSkeletonConfiguration().initialPosition'
    case radial(Bool)


  Starting (initial) point of the gradient on the `NKSkeleton().sourceView'

  In case `NKSkeletonConfiguration().type = .axial' gradient vector will be directed from the selected starting point to the opposite side/corner

  In case `NKSkeletonConfiguration().type = .radial(bool)' will be formed as a radial transition between the colors from the starting point in all directions
  public enum NKInitialPosition {

    /// <if `NKSkeletonConfiguration().type = .axial'> from left side to right side
    case left

    /// <if `NKSkeletonConfiguration().type = .axial'> from right side to left side
    case right

    /// <if `NKSkeletonConfiguration().type = .axial'> from top side to bottom side
    case top

    /// <if `NKSkeletonConfiguration().type = .axial'> from bottom side to top side
    case bottom

    /// <if `NKSkeletonConfiguration().type = .axial'> from top left corner to bottom right corner
    case topLeft

    /// <if `NKSkeletonConfiguration().type = .axial'> from top right corner to bottom left corner
    case topRight

    /// <if `NKSkeletonConfiguration().type = .axial'> from bottom left corner to top right corner
    case bottomLeft

    /// <if `NKSkeletonConfiguration().type = .axial'> from bottom right corner to top left corner
    case bottomRight

    /// <if `NKSkeletonConfiguration().type = .axial'> from center to left and right sides
    case center


The following image shows the principle of determining the subview level relative to the main view (self.view) of the view controller. image


To run the example project, clone the repo, and run pod install from the Example directory first.



NKSkeleton is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'NKSkeleton'


nkopilovskii, [email protected]


NKSkeleton is available under the MIT license. See the LICENSE file for more info.

Popular Loader Projects
Popular Gradient Projects
Popular User Interface Components Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Ios Animation