Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/joogps/IrregularGradient

Create animated irregular gradients in SwiftUI.
https://github.com/joogps/IrregularGradient

animated gradient ios irregular macos mesh movement swift swiftui tvos watchos

Last synced: 6 days ago
JSON representation

Create animated irregular gradients in SwiftUI.

Lists

README

        

IrregularGradient


Project logo










Twitter: @joogps

A SwiftUI library for rendering beautiful, animated and _irregular_ gradient views.

> [!NOTE]
> This project implements this effect using pure SwiftUI, which can be computationally expensive. If you want something more efficient, please consider switching to [FluidGradient](https://github.com/Cindori/FluidGradient).

## Installation

This repository is a Swift package, so just include it in your Xcode project and target under **File > Add package dependencies**. Then, `import IrregularGradient` to the Swift files where you'll be using it.

## Usage

You can add an irregular gradient to your app with the following modifier:

```swift
RoundedRectangle(cornerRadius: 24.0, style: .continuous)
.irregularGradient(colors: [.orange, .pink, .yellow, .orange, .pink, .yellow], backgroundColor: .orange)
```

The other parameters go as follow:

```swift
irregularGradient(colors: [Color], background: () -> View, shouldAnimate: Binding = .constant(true), speed: Double = 10)
```

- `colors` specifies the colors of each blob. Order and amount matters, so the colors will be stacked in the order of the array on the Z axis. Having two entries of the same color will create two completely distinct blobs of that color.
- `background` defines the background of your gradient. It's a closure that returns a view. Not specifying this value it will make the background clear.
- `shouldAnimate` is a boolean that specifies whether or not the gradient blobs should move. It can be enabled and disabled dinamically, and movement will always slow down to a stop. The default value is `true`.
- `speed` accepts a Double and defines the speed of the movement — a 0.5 speed means the blobs will update every 2 seconds. The default value is 1.

You can also use the `IrregularGradient` standalone view, which exists in its own container.

## How it's done
The current implementation of this package is done through the creation of blobs (SwiftUI's [Ellipse](https://developer.apple.com/documentation/swiftui/ellipse) shape) of the specified colors that move and scale randomly in the container, and are then blurred to achieve the desired effect.

## Questions

If you have any questions or suggestions, you can create an issue or pull request on this GitHub repository or even contact me via [Twitter](https://twitter.com/joogps) or [email](mailto:[email protected]).