Since iOS 18, network activity indicator is no longer displayed. iPhones with a notch or Dynamic Island never displayed it. This framework brings it back by placing an activity indicator in the upper right of the screen on top of the regular status bar items (on top of the clock on iPhone SE running iOS 18+).
Since a circular indicator wouldn't fit, a rectangular KITT scanner-like indicator with a gradient is shown. The indicator UI can be used standalone or as a "fix" for the iOS network activity indicator (using the existing API).
In your app delegate's didFinishLaunching
method, after initializing the window, just call
UIApplication.configureLinearNetworkActivityIndicatorIfNeeded()
Then, use the standard network activity indicator as usual.
Include a FTLinearActivityIndicator
view in your storyboard or instantiate it from code. The class supports the following methods and properties, using a similar API as the iOS UIActivityIndicatorView
:
startAnimating()
stopAnimating()
isAnimating: Bool
hidesWhenStopped: Bool
tintColor
is supported to colorize the indicator gradient.
- iOS 12 or higher (iOS 11 is supported until version 1.6)
- compiles for Mac Catalyst or visionOS (without network activity indicator)
FTLinearActivityIndicator is available through Swift Package Manager or CocoaPods.
To install FTLinearActivityIndicator using Swift Package Manager you can follow the tutorial published by Apple using the URL for the FTLinearActivityIndicator repo with the current version:
- In Xcode, select “File” → “Add Packages…”
- Enter
https://github.com/futuretap/FTLinearActivityIndicator.git
To install FTLinearActivityIndicator via CocoaPods, add the following line to your Podfile:
pod 'FTLinearActivityIndicator'
Then run pod install
.
To open an example project, just call pod try FTLinearActivityIndicator
on the command line.
Developed by Ortwin Gentz (Mastodon) and used in FutureTap’s Where To? and Streets apps – we eat our own dog food!
FTLinearActivityIndicator is available under the CC-BY-SA 4.0 license. You may copy and redistribute, adapt and build upon the framework for any purpose, even commercially, as long as you give credit to me in the About menu or a similar place in the app. If you need a different license without attribution requirement, please contact me and we can work something out.
If you would like to support my Open Source work, consider joining me as a sponsor! 💪️ Your sponsorship enables me to spend more time on this and other community projects. Thank you!