-
-
Notifications
You must be signed in to change notification settings - Fork 906
/
Copy pathUIButton+Extension.swift
40 lines (35 loc) · 1.41 KB
/
UIButton+Extension.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//
// UIButton+Extension.swift
// Nextcloud
//
// Created by Milen Pivchev on 17.12.24.
// Copyright © 2024 Marino Faggiana. All rights reserved.
//
extension UIButton {
func hideButtonAndShowSpinner(tint: UIColor = .white) {
self.isHidden = true
let spinnerTag = Int(bitPattern: Unmanaged.passUnretained(self).toOpaque())
if self.superview?.subviews.first(where: { view -> Bool in
return view.isKind(of: UIActivityIndicatorView.self) && view.tag == spinnerTag
}) != nil {
return
}
let spinner = UIActivityIndicatorView(style: .medium)
spinner.tag = spinnerTag
spinner.color = tint
spinner.startAnimating()
spinner.center = self.center
self.superview?.addSubview(spinner)
spinner.translatesAutoresizingMaskIntoConstraints = false
spinner.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true
spinner.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true
}
func hideSpinnerAndShowButton() {
let spinnerTag = Int(bitPattern: Unmanaged.passUnretained(self).toOpaque())
let spinner = self.superview?.subviews.first(where: { view -> Bool in
return view.isKind(of: UIActivityIndicatorView.self) && view.tag == spinnerTag
})
spinner?.removeFromSuperview()
self.isHidden = false
}
}