繁体   English   中英

UIActivityIndi​​catorView视图上的对话框

[英]UIActivityIndicatorView dialog over view

在我的应用程序中,我使用了自定义UIActivityIndi​​cator视图( this ),并且效果很好。 我有一个UITableView,我希望指示器在tableview上加载数据。 为了解决该问题,我创建了一个背景为空的空视图,当我需要启动指标的动画时,我只是隐藏了tableview并显示了空视图+指标。

结果是这样的:

图片1

我看到可以在某处使用类似以下内容的地方:

图片2

我能怎么做?

提前致谢。

您可以尝试在“表格视图”上添加半透明的“黑色”视图,并将自定义活动指示器代码作为子视图放置在“黑色”视图中。

let aBlackView = UIView(frame: CGRectMake(0, 0, self.view.bounds.width, self.view.bounds.height))
aBlackView.backgroundColor = UIColor.blackColor()
aBlackView.alpha = 0.75 // Change the alpha depending on how much transparency you require

let aMainWindow = UIApplication.sharedApplication().delegate!.window
aMainWindow!!.addSubview(aBlackView)

/* Enter you code for NVActivityIndicatorViewable here */

aBlackView.addSubview(/* NVActivityIndicatorViewable */)

完成请求后,可以通过调用以下代码来删除“黑色”视图:

aBlackView.removeFromSuperview()

我创建了一个活动显示屏幕。 我在项目的每个地方都用过。

//ProgressBarNotification.swift

 import Foundation
 import UIKit

class ProgressBarNotification {

internal static var strLabel = UILabel()
internal static var messageFrame = UIView()
internal static var activityIndicator = UIActivityIndicatorView()    

internal static func progressBarDisplayer(msg:String,indicator:Bool ){


    let view1 = UIApplication.sharedApplication().delegate?.window!!.rootViewController?.view

    view1?.userInteractionEnabled = false

    strLabel = UILabel(frame: CGRect(x: 50, y: 0, width: 200, height: 50))
    strLabel.text = msg
    strLabel.textColor = UIColor.whiteColor()
    messageFrame = UIView(frame: CGRect(x: view1!.frame.midX - 90, y: view1!.frame.midY - 25 , width: 180, height: 50))
    messageFrame.layer.cornerRadius = 15
    messageFrame.backgroundColor = UIColor(white: 0, alpha: 0.7)
    if indicator {
        activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.White)
        activityIndicator.frame = CGRect(x: 0, y: 0, width: 50, height: 50)
        activityIndicator.startAnimating()
        messageFrame.addSubview(activityIndicator)
    }
    messageFrame.addSubview(strLabel)
    view1!.addSubview(messageFrame)


}

internal static func removeProgressBar() {

    let view1 = UIApplication.sharedApplication().delegate?.window!!.rootViewController?.view

    _ = view1?.subviews.filter({ (view) -> Bool in
        if view == ProgressBarNotification.messageFrame {
            view.removeFromSuperview()
        }
        return false
    })

    ProgressBarNotification.messageFrame.removeFromSuperview()

    view1?.userInteractionEnabled = true

}

  deinit{

  }
}

用法

    //To start Loader

    ProgressBarNotification.progressBarDisplayer("Loading", indicator: true)

   //Stop 

    ProgressBarNotification.removeProgressBar()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM