2010-11-18 9 views
8

मेरे पास UIScrollView है जिसमें UIImageView है और आईफोन घुमाए जाने पर मुझे सही व्यवहार करने में कुछ परेशानी है।आईफोन रोटेशन पर स्क्रीन फिट करने के लिए स्केल छवि

लक्ष्य: मैं प्राप्त करने के लिए कोशिश कर रहा हूँ निम्नलिखित जब चित्र से परिदृश्य के लिए जा रहा:

_________ 
|AAAAAAA| 
|BBBBBBB|   _________________ 
|CCCCCCC|   |  AAAAAA  | 
|DDDDDDD| --> |  CCCCCC  | 
|EEEEEEE|   |  EEEEEE  | 
|FFFFFFF|   |_____GGGGGG_____| 
|GGGGGGG| 
--------- 

यहाँ पोर्ट्रेट दृश्य में पूरी छवि लैंडस्केप दृश्य में फिट करने के लिए जब iPhone घूमता नापा जाता है। यह भी केंद्रित है। मैं पहलू अनुपात को संरक्षित करने की कोशिश भी कर रहा हूं। उपयोगकर्ता इंटरैक्शन भी चालू है, और उपयोगकर्ता छवि को पैन/ज़ूम करने के लिए पूरी स्क्रीन का उपयोग करने में सक्षम होना चाहिए।

वर्तमान में मैं निम्नलिखित है scrollview पर autoresizingMask:

scrollView.autoresizingMask =(UIViewAutoresizingFlexibleWidth | 
           UIViewAutoresizingFlexibleHeight);  

लेकिन इस निम्नलिखित

_________ 
|AAAAAAA| 
|BBBBBBB|   _________________ 
|CCCCCCC|   |AAAAAA   | 
|DDDDDDD| --> [BBBBBB   | 
|EEEEEEE|   [CCCCCC   | 
|FFFFFFF|   [DDDDDD__________| 
|GGGGGGG| 
--------- 

देता है यह सेटिंग पैमाने को बरकरार रखता है और ऊपरी बाएं कोने से ऑफसेट।

प्रश्न: क्या उपयुक्त autoresizingMask का उपयोग करके इस व्यवहार को प्राप्त करना संभव है? यदि नहीं, तो एक शायद

scrollView.autoresizingMask = UIViewAutoresizingNone; 

सेट और मैन्युअल रूप से रोटेशन पर UIScrollView के लिए zoomScale और contentOffset स्थापित करना चाहिए। लेकिन, यह कहाँ किया जाना चाहिए? उस परिवर्तन को एनिमेट करने के बारे में क्या?

समाधान: बहुत थोड़ा जवाब को संशोधित करने के लिए नीचे दिए गए मैं ऊपर व्यवहार नीचे कोड का उपयोग कर मिल द्वारा:

imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | 
            UIViewAutoresizingFlexibleHeight); 

scrollView.autoresizingMask =(UIViewAutoresizingFlexibleWidth 
            | UIViewAutoresizingFlexibleHeight); 

imageView.contentMode = UIViewContentModeScaleAspectFit; 
scrollView.contentMode = UIViewContentModeCenter; 

उत्तर

3

आज़माएं:

scrollView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | 
          UIViewAutoresizingFlexibleHeight);  
imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | 
          UIViewAutoresizingFlexibleHeight); 

imageView.contentMode = UIViewContentModeAspectFit; // You could also try UIViewContentModeCenter 

मैं नहीं करता है, तो यकीन है कि imageView स्वचालित रूप से UIScrollView के भीतर आकार बदल जाएगा, इसलिए यदि ऑटोरेसाइजिंग काम नहीं करती है, तो आप स्क्रॉलव्यू के आकार के बराबर फ्रेम को घुमाने पर फ्रेम सेट करने का प्रयास कर सकते हैं।

+1

धन्यवाद! यह तेज़ था। सही व्यवहार पाने के लिए मुझे थोड़ा कोड बदलना पड़ा (ऊपर देखें), लेकिन यह मुझे सीधे दिशा में डाल दिया। – user467225

+1

बिल्कुल काम नहीं करता है –

-1

मेरे पास एक समान स्थिति थी, फ़ोटो की एक श्रृंखला प्रदर्शित करने के लिए 3 छवि दृश्यों ('पिछला', 'वर्तमान', और 'अगला') के साथ एक बहुत ही सरल स्क्रॉल देखें।

तस्वीरें आईपैड के लिए आकार में थीं, लेकिन परिदृश्य और चित्र उन्मुखता का मिश्रण। मैं उन्हें स्क्रीन में फिट करना चाहता था, (यदि आवश्यक हो तो लेटरबॉक्स किया गया), पहलू अनुपात को बनाए रखा गया। मैंने पाया कि मुझे इसे करने के लिए केवल 3 छवि दृश्यों में ऐसा करने की आवश्यकता है:

imageView.contentMode = UIViewContentModeScaleAspectFit;