IPhone स्क्रीन के बीच में गतिविधि संकेतक कैसे प्रदर्शित करें?


79

जब हम छवि बनाते हैं, तो हम गतिविधि संकेतक प्रदर्शित करना चाहते हैं। क्या कोई हमारी मदद कर सकता है?


इस लिंक को आजमाएं: jayprakashdubey.blogspot.in/2014/07/…
जयप्रकाश दुबे

जवाबों:


149
UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc]     
        initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

    activityView.center=self.view.center;
    [activityView startAnimating];
    [self.view addSubview:activityView];

13
मैं activityView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin; उचित लैंडस्केप ओरिएंटेशन लुक और रोटेशन के लिए भी जोड़
दूंगा

@adsurbum धन्यवाद! यह एसई से 8 प्लस तक iPhone स्क्रीन के सभी आकार पर केंद्रित करने के लिए महत्वपूर्ण था! स्विफ्ट में, यह है: activityView.autoresizingMask = [.flexibleLeftMargin, .flexibleTopMargin, .flexibleRightMargin, .flexibleBottomMargin, .flexibleWidth, .flexibleHeight]
balazs630

43

यदि आप स्विफ्ट का उपयोग कर रहे हैं, तो आप इसे कैसे करते हैं

let activityView = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge)
activityView.center = self.view.center
activityView.startAnimating()

self.view.addSubview(activityView)

15

स्विफ्ट 3 के लिए कोड अपडेट किया गया

यहाँ छवि विवरण दर्ज करें

स्विफ्ट कोड

import UIKit
class ViewController: UIViewController {

    let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge)

    @IBOutlet weak var myBlueSubview: UIView!

    @IBAction func showButtonTapped(sender: UIButton) {
        activityIndicator.startAnimating()
    }

    @IBAction func hideButtonTapped(sender: UIButton) {
        activityIndicator.stopAnimating()
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        // set up activity indicator
        activityIndicator.center = CGPoint(x: myBlueSubview.bounds.size.width/2, y: myBlueSubview.bounds.size.height/2)
        activityIndicator.color = UIColor.yellow
        myBlueSubview.addSubview(activityIndicator)
    }
}

टिप्पणियाँ

  • आप गतिविधि संकेतक को स्क्रीन के मध्य में रूट के viewबजाय सबव्यू के रूप में जोड़ सकते हैं myBlueSubview

    activityIndicator.center =  CGPoint(x: self.view.bounds.size.width/2, y: self.view.bounds.size.height/2)
    self.view.addSubview(activityIndicator)
    
  • आप UIActivityIndicatorViewइंटरफ़ेस बिल्डर में भी बना सकते हैं । बस स्टोरीबोर्ड पर एक गतिविधि संकेतक दृश्य खींचें और गुण सेट करें। बंद होने पर खाल को अवश्य देखें । कॉल करने के लिए एक आउटलेट का उपयोग करें startAnimating()और stopAnimating()इस ट्यूटोरियल देखें ।

यहाँ छवि विवरण दर्ज करें

  • याद रखें कि LargeWhiteशैली का डिफ़ॉल्ट रंग सफेद है। इसलिए यदि आपके पास एक सफेद पृष्ठभूमि है जिसे आप नहीं देख सकते हैं, तो बस रंग को काले या जो भी अन्य रंग आप चाहते हैं उसे बदल दें।

    activityIndicator.color = UIColor.black
    
  • एक सामान्य उपयोग का मामला होगा जबकि एक पृष्ठभूमि कार्य चलता है। यहाँ एक उदाहरण है:

    // start animating before the background task starts
    activityIndicator.startAnimating()
    
    // background task
    DispatchQueue.global(qos: .userInitiated).async {
    
        doSomethingThatTakesALongTime()
    
        // return to the main thread
        DispatchQueue.main.async {
    
            // stop animating now that background task is finished
            self.activityIndicator.stopAnimating()
        }
    }
    

13

यह सही तरीका है:

UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
activityIndicator.center = CGPointMake(self.view.frame.size.width / 2.0, self.view.frame.size.height / 2.0);
[self.view addSubview: activityIndicator];

[activityIndicator startAnimating];

[activityIndicator release];

यदि आप रोटेशन का समर्थन करते हैं तो अपने ऑटोरेस्पोन्डिंग मास्क को सेट करें। चियर्स !!!


4

इस तरह आजमाएं

UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    activityIndicator.frame = CGRectMake(10.0, 0.0, 40.0, 40.0);
    activityIndicator.center = super_view.center;
    [super_view addSubview: activityIndicator];

[activityIndicator startAnimating];

4

यदि आप गतिविधि संकेतक के साथ एक पाठ जोड़ना चाहते हैं, तो कृपया http://nullpointr.wordpress.com/2012/02/27/ios-dev-custom-activityindicatorview/ पर देखें


आपके साझा लिंक की सराहना की जाती है, लेकिन आपको हमें उन चरणों को समझना चाहिए, ताकि हर किसी को इसे प्राप्त करने का रास्ता साफ हो जाए।
राज आर्यन

4

स्विफ्ट 4, ऑटोलॉयट संस्करण

func showActivityIndicator(on parentView: UIView) {
    let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .gray)
    activityIndicator.startAnimating()
    activityIndicator.translatesAutoresizingMaskIntoConstraints = false

    parentView.addSubview(activityIndicator)

    NSLayoutConstraint.activate([
        activityIndicator.centerXAnchor.constraint(equalTo: parentView.centerXAnchor),
        activityIndicator.centerYAnchor.constraint(equalTo: parentView.centerYAnchor),
    ])
}

1
S / O में आपका स्वागत है, आपका उत्तर कभी भी 100% कोड नहीं होना चाहिए .. हमेशा कुछ स्पष्टीकरण जोड़ें।
तस्लीम ओसेनी

यकीन नहीं होता कि यह एक काला और सफेद नियम है। यदि प्रश्न का दायरा काफी सरल है और कोड स्व-व्याख्यात्मक है, तो मुझे लगता है कि कोड-ओनली उत्तर देना पूरी तरह से ठीक है। @ ओरखन का जवाब हाजिर है।
एंड्रे हेरकुलानो

2

आप इस तरह की स्थिति निर्धारित कर सकते हैं

        UIActivityIndicatorView *activityView = 
[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
activityView.frame = CGRectMake(120, 230, 50, 50);
[self.view addSubview:activityView];

तदनुसार फ्रेम का आकार बदलें .....


2

यदि आप AutoLayout का उपयोग करके स्पिनर को केंद्र में रखना चाहते हैं, तो करें:

UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
[activityView startAnimating];
[self.view addSubview:activityView];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:activityView
                                                      attribute:NSLayoutAttributeCenterX
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:self.view
                                                      attribute:NSLayoutAttributeCenterX
                                                     multiplier:1.0
                                                       constant:0.0]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:activityView
                                                      attribute:NSLayoutAttributeCenterY
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:self.view
                                                      attribute:NSLayoutAttributeCenterY
                                                     multiplier:1.0
                                                       constant:0.0]];

2

स्विफ्ट 3, एक्सकोड 8.1

आप UIVctivityIndicatorView को UIVIV और विरासत में मिली UIVIV क्लासेस के केंद्र में रखने के लिए छोटे एक्सटेंशन का उपयोग कर सकते हैं :

कोड

extension UIActivityIndicatorView {

    convenience init(activityIndicatorStyle: UIActivityIndicatorViewStyle, color: UIColor, placeInTheCenterOf parentView: UIView) {
        self.init(activityIndicatorStyle: activityIndicatorStyle)
        center = parentView.center
        self.color = color
        parentView.addSubview(self)
    }
}

कैसे इस्तेमाल करे

let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge, color: .gray,  placeInTheCenterOf: view)
activityIndicator.startAnimating()

पूर्ण उदाहरण

इस उदाहरण में UIActivityIndicatorView ViewControllers के केंद्र में रखा गया है:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge, color: .gray,  placeInTheCenterOf: view)
        activityIndicator.startAnimating()
    }
}

extension UIActivityIndicatorView {

    convenience init(activityIndicatorStyle: UIActivityIndicatorViewStyle, color: UIColor, placeInTheCenterOf parentView: UIView) {
        self.init(activityIndicatorStyle: activityIndicatorStyle)
        center = parentView.center
        self.color = color
        parentView.addSubview(self)
    }
}

1

स्विफ्ट 3 के लिए आप निम्नलिखित का उपयोग कर सकते हैं:

 func setupSpinner(){
    spinner = UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 40, height:40))
    spinner.color = UIColor(Colors.Accent)
    self.spinner.center = CGPoint(x:UIScreen.main.bounds.size.width / 2, y:UIScreen.main.bounds.size.height / 2)
    self.view.addSubview(spinner)
    spinner.hidesWhenStopped = true
}

0

आशा है कि यह काम करेगा:

// create activity indicator 
UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] 
    initWithFrame:CGRectMake(0.0f, 0.0f, 20.0f, 20.0f)];
[activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite];

...
 [self.view addSubview:activityIndicator];
// release it
[activityIndicator release];

0

? यदि आप इंटरफ़ेस का उपयोग करके इसे करने का प्रयास करना चाहते हैं, तो आप इसके लिए मेरा वीडियो देख सकते हैं । इस तरह, आपको iPhone स्क्रीन के बीच में गतिविधि संकेतक दिखाने के लिए कोई कोड लिखने की आवश्यकता नहीं है।


0
import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var textLbl: UILabel!

    var containerView = UIView()
    var loadingView = UIView()
    var activityIndicator = UIActivityIndicatorView()

    override func viewDidLoad() {
        super.viewDidLoad()

        let _  = Timer.scheduledTimer(withTimeInterval: 10, repeats: false) { (_) in
            self.textLbl.text = "Stop ActivitiIndicator"
            self.activityIndicator.stopAnimating()
            self.containerView.removeFromSuperview()
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    @IBAction func palyClicked(sender: AnyObject){

        containerView.frame = self.view.frame
        containerView.backgroundColor = UIColor(red: 0/255, green: 0/255, blue: 0/255, alpha: 0.3)
        self.view.addSubview(containerView)

        loadingView.frame = CGRect(x: 0, y: 0, width: 80, height: 80)
        loadingView.center = self.view.center
        loadingView.backgroundColor = UIColor(red: 0/255, green: 0/255, blue: 0/255, alpha: 0.5)
        loadingView.clipsToBounds = true
        loadingView.layer.cornerRadius = 10
        containerView.addSubview(loadingView)

        activityIndicator.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
        activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.whiteLarge
        activityIndicator.center = CGPoint(x:loadingView.frame.size.width / 2, y:loadingView.frame.size.height / 2);
        activityIndicator.startAnimating()
        loadingView.addSubview(activityIndicator)

    }
}

धन्यवाद थोंगचै! क्या आप अपने कोड को समझाते हुए कुछ अतिरिक्त पाठ जोड़ सकते हैं?
ब्रैंडन मिन्निक

-1

मुझे न्यूनतम कोड के साथ गतिविधि संकेतक प्रदर्शित करने का एक तरीका मिला:

सबसे पहले अपने UI किट को आयात करें

import UIKit;

फिर आपको गतिविधि संकेतक शुरू करना होगा

let activityIndicator:UIActivityIndicatorView = UIActivityIndicatorView();

इसके बाद बस नीचे दिए गए कार्यों को कॉपी करें जो कि स्वयं व्याख्यात्मक हैं और जहाँ भी आपको उनकी आवश्यकता हो, उन्हें कॉल करें:

func startLoading(){
    activityIndicator.center = self.view.center;
    activityIndicator.hidesWhenStopped = true;
    activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.gray;
    view.addSubview(activityIndicator);

    activityIndicator.startAnimating();
    UIApplication.shared.beginIgnoringInteractionEvents();

}

func stopLoading(){ 

    activityIndicator.stopAnimating();
    UIApplication.shared.endIgnoringInteractionEvents();

}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.