Igo*_*aev 5 swift swift-protocols
我想创建协议,当它们符合此协议时,它将使我能够向UIViewController及其子类添加活动指示符/从UIViewController及其子类中移除活动指示符。
所以我最终得到了这样的代码
protocol ActivityIndicatorPresenter {
var activityIndicator: UIActivityIndicatorView { get }
func showActivityIndicator()
func hideActivityIndicator()
}
extension ActivityIndicatorPresenter where Self: UIViewController {
func showActivityIndicator() {
dispatch_async(dispatch_get_main_queue()) {
self.activityIndicator.color = UIColor.blackColor()
self.activityIndicator.frame = CGRect(x: 0.0, y: 0.0, width: 80.0, height: 80.0)
self.activityIndicator.center = CGPoint(x:self.view.bounds.size.width / 2, y:self.view.bounds.size.height / 2)
self.view.addSubview(self.activityIndicator)
self.activityIndicator.startAnimating()
}
}
func hideActivityIndicator() {
dispatch_async(dispatch_get_main_queue()) {
self.activityIndicator.stopAnimating()
self.activityIndicator.removeFromSuperview()
}
}
}
Run Code Online (Sandbox Code Playgroud)
并在UIViewController的子类中:
class MyViewController: ActivityIndicatorPresenter {
var activityIndicator: UIActivityIndicator { get {return self.spinner}}
var spinner = UIActivityIndicator()
}
Run Code Online (Sandbox Code Playgroud)
一切正常,但我认为在计算属性的getter中返回存储的属性是一种解决方法。是更漂亮的实现方式吗?
| 归档时间: |
|
| 查看次数: |
565 次 |
| 最近记录: |