Provide a few helpers for animating common UIKit operations, such as setting text
This library provides a few helper functions for easily animating common UIKit operations, such as setting text and images.
-
view.performTransition()
does a cross fade of the view from one state to another -
view.performTransitionIfNeeded()
same, but only if theanimated
parameter is true -
UIView.performAnimationsIfNeeded()
only animates the changes if theanimated
parameter is true -
view.shake()
shakes the view, usually to indicate an error -
view.shakeWithHapticErrorFeedback()
same, but with haptic error feedback
Example:
view.performTransition {
// update some complex view here, changes will crossfade
}
view.performTransitionIfNeeded(animated: true) {
// update some complex view here, changes will crossfade
}
// indicates an error by shaking a textfield
inputTextField.shakeWithHapticErrorFeedback {
inputTextField.becomeFirstResponder()
}
setImage(_:animated:)
sets a new image with a crossfade transition, if animated is truesetImage(_:tintColor:animated)
same, but with a tint color parameter
Example:
imageView.setImage(UIImage(systemNamed: "gearshape"), tintColor: .red, animated: true)
setText(_: animated:)
sets new text with a crossfade transition, if animated is truesetAttributedText(_:animated:)
same, but for attributed textsetText(_:textColor:animated:)
same, but text & colorsetTextColor(_:animated:)
same, but only text color
Example:
label.setText("New text", animated: true)
textView.setAttributedText(newAttributedText, animated: true)
switchRootViewController()
changes the root view controller, with a cross fade animation if wanted
Example:
window.setRootViewController(newViewController, animated: true)
DisplayLink is a small wrapper around CADisplayLink
that uses a block callback and stops the display link whenever it gets deallocated.
Example:
var displayLink = DisplayLink.started {
print("frame")
}
DispatchQueue.main.asyncAfter(.now() + 1) {
displayLink = nil
}