我有两个ViewControllers(A和B)快速IOS。A和B都从Internet分别加载数据。我要activityIndicator在加载时显示。我知道我可以通过在每个VC中将其声明为如下方式来做坏事:
ViewController A
var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
func activityIndicatorBegin() {
activityIndicator = UIActivityIndicatorView(frame: CGRectMake(0,0,50,50))
activityIndicator.center = self.view.center
activityIndicator.hidesWhenStopped = true
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
view.addSubview(activityIndicator)
activityIndicator.startAnimating()
disableUserInteraction()
greyView = UIView()
greyView.frame = CGRectMake(0, 0, self.view.bounds.width, self.view.bounds.height)
greyView.backgroundColor = UIColor.blackColor()
greyView.alpha = 0.5
self.view.addSubview(greyView)
}
func activityIndicatorEnd() {
self.activityIndicator.stopAnimating()
enableUserInteraction()
self.greyView.removeFromSuperview()
}
Run Code Online (Sandbox Code Playgroud)
并对ViewController B执行完全相同的操作,并调用在B视图控制器中声明的activityIndicatorBegin和activityIndicatorEnd函数。但是,我想使代码更整洁。怎么做?这些天,我正在努力使代码更整洁。
谢谢,
-更新-
我会想像下面的代码将工作。但这不是因为我无法在扩展中声明变量
var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
extension UIViewController {
func activityIndicatorBegin() {
activityIndicator = UIActivityIndicatorView(frame: CGRectMake(0,0,50,50))
activityIndicator.center = self.view.center
activityIndicator.hidesWhenStopped = true
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
view.addSubview(activityIndicator)
activityIndicator.startAnimating()
disableUserInteraction()
greyView = UIView()
greyView.frame = CGRectMake(0, 0, self.view.bounds.width, self.view.bounds.height)
greyView.backgroundColor = UIColor.blackColor()
greyView.alpha = 0.5
self.view.addSubview(greyView)
}
func activityIndicatorEnd() {
self.activityIndicator.stopAnimating()
enableUserInteraction()
self.greyView.removeFromSuperview()
}
}
Run Code Online (Sandbox Code Playgroud)
创建一个BaseViewController并添加这两个方法并activityIndicator在其中声明 对象BaseViewController。现在BaseViewController作为所有ViewController. 之后,如果您想添加指标,只需像这样调用
1) 创建 BaseViewController
class BaseViewController: UIViewController {
var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func activityIndicatorBegin() {
activityIndicator = UIActivityIndicatorView(frame: CGRectMake(0,0,50,50))
activityIndicator.center = self.view.center
activityIndicator.hidesWhenStopped = true
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
view.addSubview(activityIndicator)
activityIndicator.startAnimating()
disableUserInteraction()
greyView = UIView()
greyView.frame = CGRectMake(0, 0, self.view.bounds.width, self.view.bounds.height)
greyView.backgroundColor = UIColor.blackColor()
greyView.alpha = 0.5
self.view.addSubview(greyView)
}
func activityIndicatorEnd() {
self.activityIndicator.stopAnimating()
enableUserInteraction()
self.greyView.removeFromSuperview()
}
}
Run Code Online (Sandbox Code Playgroud)
2)现在,将这个BaseViewController作为你所有的家长viewController喜欢这个
class ViewController1: BaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
//Now if you want to add activityIndicator call like this
self.activityIndicatorBegin()
//or if you want remove activityIndicator
self.activityIndicatorEnd()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
SWIFT 4
extension UIView{
func activityStartAnimating(activityColor: UIColor, backgroundColor: UIColor) {
let backgroundView = UIView()
backgroundView.frame = CGRect.init(x: 0, y: 0, width: self.bounds.width, height: self.bounds.height)
backgroundView.backgroundColor = backgroundColor
backgroundView.tag = 475647
var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
activityIndicator = UIActivityIndicatorView(frame: CGRect.init(x: 0, y: 0, width: 50, height: 50))
activityIndicator.center = self.center
activityIndicator.hidesWhenStopped = true
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.gray
activityIndicator.color = activityColor
activityIndicator.startAnimating()
self.isUserInteractionEnabled = false
backgroundView.addSubview(activityIndicator)
self.addSubview(backgroundView)
}
func activityStopAnimating() {
if let background = viewWithTag(475647){
background.removeFromSuperview()
}
self.isUserInteractionEnabled = true
}
Run Code Online (Sandbox Code Playgroud)
}
用法:
self.view.activityStartAnimating(activityColor: UIColor.white, backgroundColor: UIColor.black.withAlphaComponent(0.5))
self.view.activityStopAnimating()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2666 次 |
| 最近记录: |