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 theanimatedparameter is true -
UIView.performAnimationsIfNeeded()only animates the changes if theanimatedparameter 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
}