जब हम छवि बनाते हैं, तो हम गतिविधि संकेतक प्रदर्शित करना चाहते हैं। क्या कोई हमारी मदद कर सकता है?
जवाबों:
UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc]
initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
activityView.center=self.view.center;
[activityView startAnimating];
[self.view addSubview:activityView];
activityView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin;
उचित लैंडस्केप ओरिएंटेशन लुक और रोटेशन के लिए भी जोड़
यदि आप स्विफ्ट का उपयोग कर रहे हैं, तो आप इसे कैसे करते हैं
let activityView = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge)
activityView.center = self.view.center
activityView.startAnimating()
self.view.addSubview(activityView)
स्विफ्ट 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()
}
}
यह सही तरीका है:
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];
यदि आप रोटेशन का समर्थन करते हैं तो अपने ऑटोरेस्पोन्डिंग मास्क को सेट करें। चियर्स !!!
इस तरह आजमाएं
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];
यदि आप गतिविधि संकेतक के साथ एक पाठ जोड़ना चाहते हैं, तो कृपया http://nullpointr.wordpress.com/2012/02/27/ios-dev-custom-activityindicatorview/ पर देखें
स्विफ्ट 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),
])
}
आप इस तरह की स्थिति निर्धारित कर सकते हैं
UIActivityIndicatorView *activityView =
[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
activityView.frame = CGRectMake(120, 230, 50, 50);
[self.view addSubview:activityView];
तदनुसार फ्रेम का आकार बदलें .....
यदि आप 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]];
स्विफ्ट 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)
}
}
स्विफ्ट 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
}
आशा है कि यह काम करेगा:
// 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];
? यदि आप इंटरफ़ेस का उपयोग करके इसे करने का प्रयास करना चाहते हैं, तो आप इसके लिए मेरा वीडियो देख सकते हैं । इस तरह, आपको iPhone स्क्रीन के बीच में गतिविधि संकेतक दिखाने के लिए कोई कोड लिखने की आवश्यकता नहीं है।
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)
}
}
मुझे न्यूनतम कोड के साथ गतिविधि संकेतक प्रदर्शित करने का एक तरीका मिला:
सबसे पहले अपने 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();
}