Coder Social home page Coder Social logo

jpblurview's Introduction

JPBlurView & JPBlurAnimationView

  • JPBlurView is a UIView with a blur effect and customizable blur intensity.
  • JPBlurAnimationView inherits from JPBlurView, allows for animated modifications of the blur intensity.

JPBlurAnimationView_2.gif

JPBlurView

JPBlurView is a UIView with a blur effect and customizable blur intensity. Internally, JPBlurView encapsulates UIVisualEffectView to achieve the frosted glass effect, and utilizes UIViewPropertyAnimator to implement custom blur intensity.

The achieved effect looks like this:

JPBlurView_1.gif

It is very easy to use, the code is as follows:

// 1.Creating a blurView.
let blurView = JPBlurView(effectStyle: .systemThinMaterialDark)

// 2.Adding blurView to a parent view.
parentView.addSubview(blurView)

// 3.Layout the blurView using frame or auto layout.
blurView.frame = CGRect(x: 0, y: 0, width: 100, height: 100)

// 4.You can easily modify the blur intensity by modifying the intensity property!
blurView.intensity = 0.5
  • effectStyle is of type UIBlurEffect.Style and needs to be customized by you.
  • The intensity has a default initial value of 1, but you can pass a custom value to it in the constructor method.
  • The intensity property ranges from 0 to 1, representing 0% to 100% blur intensity.

JPBlurView allows complete customization of the blur intensity and addresses the issue of becoming ineffective when entering the background mode. If you want to modify the blur intensity with animation effects, you can use JPBlurAnimationView.

JPBlurAnimationView

JPBlurAnimationView inherits from JPBlurView, allows for animated modifications of the blur intensity. It internally relies on the pop, enabling animated modifications of the blur intensity for a smoother transition effect.

The achieved effect looks like this:

JPBlurAnimationView_1.gif

Using JPBlurAnimationView is equally straightforward. Here's the code:

let blurView = JPBlurAnimationView(effectStyle: .systemThinMaterialDark)

// Adding to a parent view and applying layout...

blurView.setIntensity(from: 0,
                      to: 1,
                      duration: 0.5,
                      timingFunctionName: .easeInEaseOut)

The animation implementation utilizes a combination of POPBasicAnimation and POPAnimatableProperty. Here is the meaning of the parameters:

  • The from parameter represents the starting blur intensity value. Default is nil, which represents starting the animation from the current blur intensity.
  • The to parameter represents the target blur intensity value.
  • The duration parameter represents the duration of the animation.
  • The timingFunctionName parameter represents the name of the animation curve or timing function to be used during the animation. It defines the pace or rhythm of the animation over time, such as linear, ease-in, ease-out, ease-in-out, etc. Default is nil.

The animation effect will only be applied if the duration is greater than 0 and the from and to values are not equal. In this case, when the duration is positive and the starting and target blur intensities are different, the animation will be triggered, resulting in a smooth transition between the two blur intensity values.

Additionally, you can make use of this convenient API:

blurView.setIntensity(0.5, animated: true)

/// The equivalent to the above API would be:
// `blurView.setIntensity(from: nil, to: 0.5, duration: 0.3, timingFunctionName: nil)`

/// If the animated parameter is set to false, then it is equivalent to:
// `blurView.intensity = 0.5`

During the animation process, you can use the stopAnimation method to stop the animation. At the point when the animation is stopped, the blur intensity will be set to the value it had when the animation was stopped.

blurView.stopAnimation()

By using JPBlurAnimationView, you can achieve interactive and animated transition effects, such as closing an image with a gesture:

JPBlurAnimationView_2.gif

Installation

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

# This includes both JPBlurView and JPBlurAnimationView, which relies on the pop library.
pod 'JPBlurView'

# This includes only JPBlurView.
pod 'JPBlurView/Base'

Author

Rogue24, [email protected]

License

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

jpblurview's People

Contributors

rogue24 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.