2013-04-17 14 views
10

के केंद्र में गतिविधि संकेतक मेरे आवेदन में मैं नेविगेशन बार (शीर्षक स्थिति) के केंद्र में गतिविधि संकेतक जोड़ना चाहता हूं। जब वेब सेवा प्रतिक्रिया पूरी हो जाती है तो इसे पुराने शीर्षक के साथ प्रतिस्थापित करना चाहिए। मेरे पास 5 नेविगेशन बार हैं आवेदन। जब मैंने Google में खोज की तो मुझे कई कोड मिल गए लेकिन वे बस बाएं या दाएं बार बटन को बदल रहे हैं। कोई मदद?नेविगेशन बार

उत्तर

19

आप नेविगेशन बार के शीर्षक को प्रतिस्थापित करने के लिए नेविगेशन आइटम की शीर्षक दृश्य संपत्ति का उपयोग करते हैं। तो एक गतिविधि सूचक को जोड़ने के लिए, बस इस कार्य करें:

UIActivityIndicatorView *aiView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
    aiView.hidesWhenStopped = NO; //I added this just so I could see it 
    self.navigationItem.titleView = aiView; 

आप फिर से इसे हटाने के लिए, और दिखाने के शीर्षक चाहते हैं: इसके अलावा

self.navigationItem.titleView = nil; 
+0

क्या "कनेक्टिंग" जैसे कुछ पाठ के साथ गतिविधि संकेतक प्रदर्शित करने का कोई तरीका है? – bobsacameno

+0

@ roi.holtzman, मुझे लगता है कि यह संभव होना चाहिए। आपको नेविगेशन के शीर्षक के रूप में UIView बनाने की आवश्यकता होगी, और इसे दो सबव्यूज़ दें; एक गतिविधि संकेतक और एक लेबल। – rdelmar

2

, आप एक पाठ लेबल के बगल में जोड़ना चाहते हैं गतिविधि सूचक (के रूप में सेटिंग्स अनुप्रयोग, जैसे फेसबुक लॉग इन में एप्पल द्वारा किया जाता है), तो आप ऐसा कर सकते हैं:

- (void)showActivityIndicator 
{ 
    UIActivityIndicatorView *activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
    activityIndicatorView.frame = CGRectMake(0, 0, 22, 22); 
    activityIndicatorView.color = [UIColor blackColor]; 
    [activityIndicatorView startAnimating]; 

    UILabel *titleLabel = [UILabel new]; 
    titleLabel.text = @"Creating Account"; 
    titleLabel.font = [UIFont boldFlatFontOfSize:18]; 

    CGSize fittingSize = [titleLabel sizeThatFits:CGSizeMake(200.0f, activityIndicatorView.frame.size.height)]; 
    titleLabel.frame = CGRectMake(activityIndicatorView.frame.origin.x + activityIndicatorView.frame.size.width + 8, 
            activityIndicatorView.frame.origin.y, 
            fittingSize.width, 
            fittingSize.height); 

    UIView *titleView = [[UIView alloc] initWithFrame:CGRectMake(-(activityIndicatorView.frame.size.width + 8 + titleLabel.frame.size.width)/2, 
                   -(activityIndicatorView.frame.size.height)/2, 
                   activityIndicatorView.frame.size.width + 8 + titleLabel.frame.size.width, 
                   activityIndicatorView.frame.size.height)]; 
    [titleView addSubview:activityIndicatorView]; 
    [titleView addSubview:titleLabel]; 

    self.navigationItem.titleView = titleView; 
} 

- (void)hideActivityIndicator 
{ 
    self.navigationItem.titleView = nil; 
} 
10

pasqls जवाब मेरे लिए अच्छी तरह से काम किया, मैं इसे तेज

में लिखी गई जानकारी
func showActivityIndicator() { 
     let activityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.White) 
     activityIndicatorView.frame = CGRectMake(0, 0, 14, 14) 
     activityIndicatorView.color = UIColor.blackColor() 
     activityIndicatorView.startAnimating() 

     let titleLabel = UILabel.new() 
     titleLabel.text = "...Connecting" 
     titleLabel.font = UIFont.italicSystemFontOfSize(14) 

     let fittingSize = titleLabel.sizeThatFits(CGSizeMake(200.0, activityIndicatorView.frame.size.height)) 
     titleLabel.frame = CGRectMake(activityIndicatorView.frame.origin.x + activityIndicatorView.frame.size.width + 8, activityIndicatorView.frame.origin.y, fittingSize.width, fittingSize.height) 

     let titleView = UIView(frame: CGRectMake(((activityIndicatorView.frame.size.width + 8 + titleLabel.frame.size.width)/2), ((activityIndicatorView.frame.size.height)/2), (activityIndicatorView.frame.size.width + 8 + titleLabel.frame.size.width), (activityIndicatorView.frame.size.height))) 
     titleView.addSubview(activityIndicatorView) 
     titleView.addSubview(titleLabel) 

     self.navigationItem.titleView = titleView 
    } 

    func hideActivityIndicator() { 
     self.navigationItem.titleView = nil 
    } 
+3

लिखना बेहतर है आपके उत्तर के बारे में कुछ स्पष्टीकरण दें। – serenesat

+1

तेजी से जवाब ढूंढना कभी-कभी मुश्किल होता है! धन्यवाद – krummens

संबंधित मुद्दे