How to display an activity indicator with text on iOS 8 with Swift?

前端 未结 14 2187
没有蜡笔的小新
没有蜡笔的小新 2020-11-27 08:58

I wanna show, programmatically, an activity indicator with text, like the one in the Photos app (after editing and saving a picture). How can I do this?

14条回答
  •  谎友^
    谎友^ (楼主)
    2020-11-27 09:44

    simple activity controller class !!!

    class ActivityIndicator: UIVisualEffectView {
    
    
    let activityIndictor: UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.WhiteLarge)
    let label: UILabel = UILabel()
    let blurEffect = UIBlurEffect(style: .Dark)
    let vibrancyView: UIVisualEffectView
    
    init() {
    
        self.vibrancyView = UIVisualEffectView(effect: UIVibrancyEffect(forBlurEffect: blurEffect))
        super.init(effect: blurEffect)
        self.setup()
    }
    
    required init?(coder aDecoder: NSCoder) {
    
        self.vibrancyView = UIVisualEffectView(effect: UIVibrancyEffect(forBlurEffect: blurEffect))
        super.init(coder: aDecoder)
        self.setup()
    }
    
    func setup() {
    
        contentView.addSubview(vibrancyView)
        vibrancyView.contentView.addSubview(activityIndictor)
        activityIndictor.startAnimating()
    }
    
    override func didMoveToSuperview() {
        super.didMoveToSuperview()
    
        if let superview = self.superview {
            let width: CGFloat = 75.0
            let height: CGFloat = 75.0
            self.frame = CGRectMake(superview.frame.size.width / 2 - width / 2,
                                    superview.frame.height / 2 - height / 2,
                                    width,
                                    height)
            vibrancyView.frame = self.bounds
            let activityIndicatorSize: CGFloat = 40
            activityIndictor.frame = CGRectMake(18, height / 2 - activityIndicatorSize / 2,
                                                activityIndicatorSize,
                                                activityIndicatorSize)
            layer.cornerRadius = 8.0
            layer.masksToBounds = true
    
        }
    }
    
    func show() {
        self.hidden = false
    }
    
    func hide() {
        self.hidden = true
    }}
    

    usage :-

    let activityIndicator = ActivityIndicator()
        self.view.addSubview(activityIndicator)
    

    to hide :-

    activityIndicator.hide()
    

提交回复
热议问题