2012-07-20 15 views
5

हल किया गया: मेरी समस्या के समाधान के लिए नीचे देखें।UIActivityIndicator को कैसे केन्द्रित करें?

enter image description here

अरे अतः,

मैं मुसीबत दृश्य के मध्य में UIActivityIndicator केंद्रित हो रही है। जैसा कि आप यहां देख सकते हैं, यह थोड़ी दूर की तुलना में लंबवत है। मेरे पास एक UIScrollView है जो बाद में UIImage सबव्यूव जोड़ता है। हालांकि UIImage लोड होने से पहले, मेरे पास यह UIActivityIndicator है यह दिखाने के लिए कि छवि लोड हो रही है।

- (void)viewDidLoad 
{ 

    [super viewDidLoad]; 
    self.scrollView.backgroundColor = [UIColor blackColor]; 
    UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc]  initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
    spinner.center = self.view.center; 

    [spinner startAnimating]; 
    [self.view addSubview:spinner]; 

मैं केंद्र CGPoint कैसे हो जाते हैं और वहाँ UIActivityIndicator सेट कर सकते हैं पर कोई भी विचार? मुझे यकीन नहीं है कि क्यों self.view.center काम नहीं करता है।

अग्रिम धन्यवाद।

संपादित करें: मुझे नेविगेशन बार और टैब बार की ऊंचाई के लिए खाता होना था। कोड मैं जोड़ने के लिए किया था:

float navigationBarHeight = [[self.navigationController navigationBar] frame].size.height; 
float tabBarHeight = [[[super tabBarController] tabBar] frame].size.height; 
spinner.center = CGPointMake(self.view.frame.size.width/2.0, (self.view.frame.size.height - navigationBarHeight - tabBarHeight)/2.0); 

enter image description here

उत्तर

6

दो समस्याओं:

  1. पहले, self.view.center उस पर वर्तमान दृश्य के फ्रेम का केंद्र है माता पिता के फ्रेम है। आप वर्तमान दृश्य के मध्य चाहते हैं, आप CGPointMake(self.view.frame.size.width/2.0, self.view.frame.size.height/2.0);

  2. दूसरा, अपने वर्तमान दृश्य navigationbar शामिल नहीं है चाहते हैं, तो आप नेविगेशन बार नीचे स्क्रीन के स्थान पर यह केंद्रित कर रहे हैं। इससे यह कम दिखने लगेगा।

+0

धन्यवाद @ रॉबर्ट रयान! अपने दो संकेतों को छोड़कर मैं इसे ठीक से काम करने में सक्षम था। उचित ऊंचाई प्राप्त करने के लिए मुझे नेविगेशन बार और टैब बार दोनों की ऊंचाई मिलनी पड़ी। मैंने कोड को अपनी मूल पोस्ट में जोड़ा। – kkSlider

2

मुझे यकीन है कि वास्तव में क्या हो रहा है नहीं कर रहा हूँ, लेकिन शायद अपने UIScrollView स्क्रीन से अधिक लंबी है? स्क्रीन सीमाओं में निर्धारित करने के लिए आप अपने UIView के आकार को प्रिंट करने का प्रयास कर सकते हैं। शायद UIActivityIndicator UIView के केंद्र पर है (स्क्रीन का केंद्र नहीं)।

+0

UIView की सीमा से केंद्र स्क्रीन के केंद्र के रूप में ही नहीं चाहेंगे? – kkSlider

+0

एनएसएलओजी ने मुझे दिया कि self.view और self.scrollView का CGRect दोनों {{0, 0}, {320, 460}} है। और self.view.center सही ढंग से प्रिंट करता है (160, 230)।सुनिश्चित नहीं है कि यहां क्या गलत है। – kkSlider

3

spinner.center = self.scrollView.center का उपयोग करें; बजाय

कोशिश इस

spinner.center = CGPointMake (CGRectGetMidX (self.bounds), CGRectGetMidY (self.bounds));

+0

धन्यवाद, लेकिन मैंने पहले से ही यह कोशिश की है और एक ही परिणाम मिल गया है। – kkSlider

4

स्विफ्ट

मैं एक नेविगेशन बार और एक टैब बार की वजह से एक ही मुद्दा रहा था। ठीक करने के लिए, अपने loadView() या जहाँ भी आप एनिमेट शुरू करने के लिए अपनी गतिविधि सूचक फोन में निम्नलिखित कोड जगह: viewDidLayoutSubviews में

let navigationBarHeight = self.navigationController?.navigationBar.frame.height 
let tabBarHeight = super.tabBarController!.tabBar.frame.height 
YourActivityIndicator.center = CGPointMake(self.view.frame.size.width/2.0, (self.view.frame.size.height - navigationBarHeight! - tabBarHeight)/2.0) 
0

सेट केंद्र।

- (void) viewDidLayoutSubviews { 

self.myActivityIndicator.center = self.view.center;  

}

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