2012-09-21 15 views
13

पर सही नहीं है मैं अपने ऐप्स को माइग्रेट कर रहा हूं और एक पर मैं UIPickerView का उपयोग करता हूं। ViewDidLoad विधि में मैं पिकर बनाता हूं और इसकी y उत्पत्ति self.view.frame.size.height पर सेट करता हूं ताकि यह स्क्रीन बंद हो। फिर जब आवश्यक हो तो मैं इसे ऊपर ले जाता हूं।UIView ऊंचाई आईफोन 5

आईफोन 5 self.view.frame.size.height पर अभी भी 480 लौटा रहा है फिर भी UIView स्क्रीन को सही तरीके से भरता है।

मैंने CGRectGetHeight(self.view.bounds) का उपयोग करने का भी प्रयास किया है, यह सोचकर कि यह कुछ अलग हो सकता है ... कोई पासा नहीं। ऐसा कोई विचार क्यों हो सकता है कि यह क्यों हो रहा है।

+2

अपने प्रोजेक्ट में कोई 640x1136 पिक्सेल [email protected] फ़ाइल जोड़ें। इसके बिना, आपका ऐप नए उपकरणों पर पूर्ण ऊंचाई तक नहीं पहुंच जाएगा। अधिक जानकारी [यहां] (http://stackoverflow.com/a/12397309/877465)। –

+0

अन्य विचारों को पूरा स्क्रीन दिखाएं? क्या आपको अपने लक्ष्य में एक आईफोन 5 स्क्रीनशॉट जोड़ना याद आया? –

+0

हां मेरे पास नई डिफ़ॉल्ट छवि है। मुझे मुद्दा मिला। मेरा निब "आईफोन 5 फुल स्क्रीन" पर सेट होना है (मुझे लगता है कि यह वही है जिसे इसे कहा जाता है)। मुझे लगता है कि यह निब से दृश्य आकार लोड करता है और खाते में स्वत: रीसाइज मास्क नहीं लेता है। – random

उत्तर

22

ऐसा इसलिए है क्योंकि दृश्य के निब में आपके द्वारा चुने गए आकार का उपयोग viewWillAppear: (BOOL) animated विधि तक किया जाएगा। फिर यह सही आकार ले जाएगा।

आप viewDidLoad के बाद से सही आकार के लिए निम्नलिखित कोड का उपयोग कर सकते हालांकि कहा जाता है:

CGSize viewSize = [[UIScreen mainScreen] bounds].size; 
viewSize = CGSizeMake(viewSize.width, viewSize.height - STATUS_BAR_HEIGHT); 

STATUS_BAR_HEIGHT 20 है, लेकिन यह अपने अनुप्रयोग पर निर्भर करता है। आपको उस लाइन को जोड़ने की आवश्यकता हो सकती है या नहीं।

संपादित

mainScreen सीमा का उपयोग कर के साथ समस्या यह है कि फ्रेम उन्मुखीकरण परिवर्तन पर परिवर्तन नहीं करता है। जिस तरह से इसे डिजाइन किया गया है। आप निम्न के साथ इस पर काम कर सकते हैं:

CGSize viewSize = [[UIScreen mainScreen] bounds].size; 

    if(UIInterfaceOrientationIsLandscape(CURRENT_ORIENTATION)){ 
     viewSize = CGSizeMake(viewSize.height, viewSize.width - STATUS_BAR_HEIGHT); 

    } else { 
     viewSize = CGSizeMake(viewSize.width, viewSize.height - STATUS_BAR_HEIGHT); 
    } 

CURRENT_ORIENTATION है [[UIApplication sharedApplication] statusBarOrientation];

1

मुझे समस्या मिली। मेरा निब "आईफोन 5 फुल स्क्रीन" पर सेट होना है (मुझे लगता है कि यह वही है जिसे इसे कहा जाता है)। मुझे लगता है कि यह निब से दृश्य आकार लोड करता है और खाते में स्वत: रीसाइज मास्क नहीं लेता है।

जब आईबी में दृश्य आकार "आकार: कोई नहीं" पर सेट होता है तो दृश्य सही आकार में नहीं होता है। इसे "आकार: रेटिना 4 पूर्ण स्क्रीन" पर सेट किया जाना है। अजीब।

+0

लेकिन यदि आप ऐसा करते हैं और अपने ऐप को चलो कहते हैं तो आईफोन 4 आपको गलत दृश्य ऊंचाई मिलेगा क्योंकि आपको आईफोन 5 दृश्य की हाइट मिलती है। – bllubbor

+0

आपका अधिकार :(aspartame उत्तर सही था। – random

18

मैं एक ही मुद्दे से निपट रहा हूं। मैंने - (void)viewDidLoad में दृश्य फ्रेम प्राप्त करने का प्रयास किया लेकिन पाया कि यह - (void)viewWillAppear:(BOOL)animated कहलाता है जब तक यह अपडेट नहीं किया जाता है।

तो - (void)viewWillAppear:(BOOL)animated में दृश्य फ्रेम प्राप्त करने का प्रयास करें और आपको ठीक होना चाहिए।

+2

यह बहुत अच्छा है! हालांकि, मैं हर बार दृश्य को बदलना नहीं चाहता हूं। दृश्य देखने के बाद इसे बदलने की जरूरत है। हम्म ... वहां कुछ अन्य खुश मध्य मैदान होना चाहिए जो हम पा सकते हैं (एक अलग विधि, p'raps?) –

+0

@ जोड एंड्रिया मेरे पास एक ही समस्या है, मुझे लगता है कि सबसे तेज़ कामकाज है IFirstLoadar विधि में उपयोग करने के लिए सबसे पहला वर्कअराउंड – htafoya

+0

@ जोड एंड्रिया आप [[यूआईस्क्रीन मेनस्क्रीन] सीमाओं का उपयोग भी कर सकते हैं]। आकार, जो काम करेगा – htafoya

3

ऐसा लगता है कि आईओएस पता लगाता है कि ऐप को आपके बंडल में [email protected] छवि का पता लगाने के बाद आईफोन 5 पर उपयोग के लिए डिज़ाइन किया गया है। How to develop or migrate apps for iPhone 5 screen resolution? में पूरी प्रक्रिया को रेखांकित करने का एक संपूर्ण उत्तर है।