की सही सीमाएं प्राप्त करना मेरे पास एक आईपैड-एप्लिकेशन है। परिदृश्य अभिविन्यास में UIViewController
की वास्तविक वास्तविक चौड़ाई = 1024px
और ऊंचाई = 768 - 20 (स्टेटसबार) - 44 (नेविगेशनबार) = 704px
।UIViewController के दृश्य
तो मैं यह [1024 x 704]
आकार प्राप्त करना चाहता हूं और मैं इसके लिए self.view.bounds
का उपयोग कर रहा हूं। यह [748 x 1024]
देता है, जो गलत है! लेकिन जब मैं स्क्रीन को दो बार घुमाता हूं (वर्तमान -> चित्र -> वर्तमान), दृश्य की सीमाएं सही हैं - [1024 x 704]
।
दृश्य इस तरह प्रारंभ किया गया था:
- (void)loadView {
self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
self.view.backgroundColor = [UIColor lightGrayColor];
}
और सीमा इस तरह मिल थे:
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"bounds = %@", NSStringFromCGRect(self.view.bounds));
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
NSLog(@"bounds = %@", NSStringFromCGRect(self.view.bounds));
}
तो सवाल यह है .. मैं कैसे बहुत शुरुआत में सही दृश्य के लिए बाध्य प्राप्त कर सकते हैं ?
यदि आप भारी विचार बना रहे हैं, तो देखने में देरी हो सकती है उपस्थिति, आप 'viewWillAppear' –
का उपयोग करके देरी को कम कर सकते हैं मैंने दृश्यविल्लियर की कोशिश की। यह वांछित के रूप में काम नहीं करता है। ऐसा लगता है कि दृश्य दिखाई देने के बाद सीमा गणना की जाती है। – Billy
मैं दृढ़ता से ** viewDidAppear का उपयोग करने की सलाह नहीं देता 'आपका दृश्य स्क्रीन पर है और इस बिंदु से उपयोगकर्ता को दिखाई देता है और आपके द्वारा किए गए परिवर्तन अचानक और दृश्यमान ग्लिच का कारण बन सकते हैं। यह रोटेशन (आदि) के दौरान दृश्य आकार में परिवर्तनों का जवाब देने में आपकी सहायता नहीं करेगा। [इसके बजाय, उपयोग करें 'viewWillLayoutSubviews'] (http://stackoverflow.com/a/42275589/2547229) (प्रकटीकरण: मेरे उत्तर के लिंक) जिस तरह से आईओएस इसे संभालने का तरीका है। – Benjohn