पर एक अलग आकार है, मैंने एक व्यू कंट्रोलर लागू किया जो केवल एक छवि प्रदर्शित करता है और उपयोगकर्ता को छवि के चारों ओर ज़ूम इन/पैन करने की अनुमति देता है। यह आईओएस 7 पर बहुत अच्छा काम करता है, लेकिन आईओएस 8 पर स्क्रॉल व्यू का फ्रेम एक अलग आकार है, और अंत परिणाम यह है कि छवि आईफोन पर बहुत दूर ज़ूम हो गई है और आईओएस 8 पर चलते समय आईपैड पर ज़ूम आउट हो गई है। ऐसा इसलिए है क्योंकि स्क्रॉल व्यू फ्रेम की चौड़ाई 600pt है, जो स्टोरीबोर्ड में इसका आकार है (आकार वर्गों का उपयोग कर यूनिवर्सल स्टोरीबोर्ड)। लेकिन मेरे पास ऑटोलायआउट बाधाएं हैं जो सुनिश्चित करने के लिए उपलब्ध हैं कि स्क्रॉल व्यू उपलब्ध स्थान को भरने के लिए फैला हुआ है - यह आईपैड पर 768pt होना चाहिए। यही कारण है कि iOS 7 पर मामला लेकिन है नहीं आईओएस 8.UIScrollView फ्रेम आईओएस 8 बनाम आईओएस 7
इस सेटअप है: इंटरफ़ेस निर्माता में, मैं एक UIViewController
कि एक UIView
जो autolayout contraints के साथ एक UIScrollView
, अनुगामी प्रमुख होता है, नीचे शामिल है, और करने के लिए शीर्ष अंतरिक्ष पर्यवेक्षक। तब viewDidLoad
में:
UIImage *image = [UIImage imageNamed:@"image"];
self.imageView = [[UIImageView alloc] initWithImage:image];
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
self.imageView.frame = CGRectMake(0, 0, self.imageView.image.size.width, self.imageView.image.size.height);
[self.scrollView addSubview:self.imageView];
self.scrollView.contentSize = image.size;
#warning Bug here - scroll view frame is 600pt on iOS 8 - should be 768 for iPad
NSLog(@"scroll view frame wid: %f", self.scrollView.frame.size.width);
मैं अगर मैं डाल कि एक ही viewDidAppear
में NSLog
फ्रेम की चौड़ाई सही ढंग से 768pt है की खोज की। मैंने viewDidLoad
के बजाय उस कोड को viewWillAppear
में स्थानांतरित करने का प्रयास किया, लेकिन मुझे एक ही परिणाम मिल गया - यह 600 में viewWillAppear
है। इसलिए स्क्रॉल व्यू डिस्प्ले भरने के लिए ठीक से खींच रहा है लेकिन स्क्रीन पर दिखाई देने तक नहीं। स्क्रीन पर छवि प्रकट होने से पहले मुझे सही फ्रेम आकार की आवश्यकता है ताकि मैं उचित न्यूनतम और अधिकतम ज़ूम मानों की गणना कर सकूं।
मैं इसे ठीक करने के लिए क्या कर सकता हूं और यह सुनिश्चित करता हूं कि यह आईओएस 7 और 8 के लिए काम करता है?
फोन जब आप कहते हैं कि "600pt, जो स्टोरीबोर्ड में इसका आकार है", तो आप एक निरंतर आकार बाधा की बात कर रहे हैं, या एक अस्थायी "प्लेसहोल्डर" आंतरिक आकार मूल्य? –
@IanMacDonald एक सार्वभौमिक स्टोरीबोर्ड का उपयोग करते समय दृश्य का डिफ़ॉल्ट आकार 600 है। चूंकि स्क्रॉल व्यू ऑटोलायआउट के माध्यम से चौड़ाई/ऊंचाई को भरने के लिए फैला है, यह डिफ़ॉल्ट रूप से 600 भी है लेकिन इसे पूरे दृश्य के आकार को भरने के लिए खींचना है। – Joey
हां, मैं समझता हूं कि डिफ़ॉल्ट आकार 600 है। मैं उत्सुक था कि आपका स्क्रॉल व्यू उन दो क्षेत्रों में से किसी एक में 600 की रिपोर्ट कर रहा है, या यदि यह गणना की गई फ्रेम फ़ील्ड में है। क्या स्क्रोल व्यू में एक पर्यवेक्षण है जो खींच नहीं रहा है? –