Files
iOS/Sources/Shared/Common/Extensions/UIImageView+UIActivityIndicator.swift
Bruno Pantaleão Gonçalves e9c85b3f7a Drop iOS 12, 13 and 14 support (#2469)
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->

## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
Drop support for iOS 12 and 13.

## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->

## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#

## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
2023-12-27 16:50:11 +01:00

49 lines
1.5 KiB
Swift

#if os(iOS)
import Foundation
import UIKit
private var activityIndicatorAssociationKey: UInt8 = 0
public extension UIImageView {
private var activityIndicator: UIActivityIndicatorView! {
get {
objc_getAssociatedObject(self, &activityIndicatorAssociationKey) as? UIActivityIndicatorView
}
set(newValue) {
objc_setAssociatedObject(self, &activityIndicatorAssociationKey, newValue, .OBJC_ASSOCIATION_RETAIN)
}
}
func showActivityIndicator() {
if activityIndicator == nil {
activityIndicator = UIActivityIndicatorView(style: .large)
activityIndicator.hidesWhenStopped = true
activityIndicator.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
activityIndicator.center = CGPoint(x: frame.size.width / 2, y: frame.size.height / 2)
activityIndicator.autoresizingMask = [
.flexibleLeftMargin,
.flexibleRightMargin,
.flexibleTopMargin,
.flexibleBottomMargin,
]
activityIndicator.isUserInteractionEnabled = false
OperationQueue.main.addOperation({ () in
self.addSubview(self.activityIndicator)
})
}
OperationQueue.main.addOperation({ () in
self.activityIndicator.startAnimating()
})
}
func hideActivityIndicator() {
OperationQueue.main.addOperation({ () in
self.activityIndicator.stopAnimating()
})
}
}
#endif