2009-09-18 16 views
5

मैं इस मुद्दे के उत्तर पाने में असमर्थ हूं।सामग्री UIImageView बिना सामग्री के UIScrollView के अंदर देखें?

मेरे पास UIScrollView के अंदर UIImageView है, और मैं केंद्र को इसकी सामग्री लंबवत करना चाहता हूं।

अभी, एकमात्र तरीका यह है कि मैं ऐसा करने में सक्षम हूं स्क्रॉल व्यू की सामग्री सेट करके UIImageView आकार की ऊंचाई के आधार पर, लेकिन यह एक सही समाधान नहीं है; यह UIImageView के आकार को बढ़ाता है, जिससे UIScrollView 'Think' बन जाता है, इसकी सामग्री बड़ी होती है, और इन काले सलाखों को शीर्ष पर जोड़ती है।

मैं से सहायता प्राप्त करने की कोशिश की है:

UIScrollView with centered UIImageView, like Photos app

और

Center content of UIScrollView when smaller

लेकिन उन सवालों के जवाब का उपयोग कर इसे हल करने में सक्षम है।

+0

मैं भी इस के लिए एक सुधार ढूंढने के लिए संघर्ष कर रहा हूँ। ऐसा लगता है कि scrollView की सामग्री को केन्द्रित करने का कोई आसान तरीका नहीं है। – Jonah

+0

क्या अभी तक इसका उत्तर दिया गया है? – JoePasq

उत्तर

1

एक अलग UIView बनाएँ और UIImageView इस में केंद्रित जोड़ें, फिर scrollview को दृश्य जोड़ने

UIView *view = [[UIVIew alloc] initWithFrame:<frame that will fill your scrollview>]; 
CGRect frame = CGRectMake((view.size.width - IMAGE_WIDTH)/2, (view.size.height - IMAGE_HEIGHT)/2, IMAGE_WIDTH, IMAGE_HEIGHT); 
UIImageView *imageView = [[UIImageView alloc] initWithFrame:frame]; 
imageView.image = [UIImage imageNamed:@"imageSized_IMAGE_WIDTH_by_IMAGE_HEIGHT.png"]; 
[view addSubview:imageView]; 
[imageView release]; 

[scrollView addSubview:view]; 
[view release]; 

ध्यान दें कि आप आयाम और स्थान आप में जरूरत होने के लिए दृश्य फ्रेम सेट करना होगा scrollview। ध्यान देने योग्य महत्वपूर्ण भाग दृश्य फ्रेम के रूप में व्यू फ्रेम के रूप में दृश्य फ्रेम के अंदर छविदृश्य का केंद्र है।

[myScrollView scrollRectToVisible:imageView.frame animated:YES]; 

यह खड़ी केंद्र के लिए, इस कोशिश:

+0

यह काम करेगा। समस्या यह है कि यदि छवि UIView से छोटी है, तो यह स्क्रीन से आंशिक रूप से स्क्रॉल करेगी। फोटो ऐप इसकी अनुमति नहीं देता है और यह बहुत अच्छा दिखता है। – Jonah

+1

हाँ, मैंने देखा है कि यूना कुछ ऐप्स में बात कर रहा है। केवल एक ऐप मैंने देखा है कि हम जो भी ठीक से चाहते हैं वह करने में सक्षम था ऐप्पल की तस्वीरें.एप :(अब तक, मैं सिर्फ अपनी छवि को यूआईवीव के अंदर केंद्रित कर रहा हूं, फिर छवि का आकार + जो भी इंसेट्स मुझे अंदर केंद्रित होना चाहिए UIScroolView। इष्टतम नहीं है, क्योंकि यह ऊपर और नीचे में काले सलाखों को जोड़ता है। अगर मैं स्क्रॉलबार (जैसे Photos.app) को हटाता हूं तो थोड़ा बेहतर लगता है – runmad

4

आपके पास कॉल scrollRectToVisible:animated:

उदाहरण द्वारा विशेष दृश्य के लिए स्क्रॉल करने के लिए UIScrollView बता सकते हैं

1) करने के लिए एक खाली दृश्य जोड़े अपने स्क्रॉलव्यू जो आपकी सामग्री की समान ऊंचाई है आकार।

2) इस खाली दृश्य पर emptyView

2) scrollRectToVisible के केंद्र के लिए अपने UIImageView जोड़ें।

+0

स्क्रीनशॉट टूटा हुआ है – Besi

0

इस मदद कर सकते हैं

myImageView.autoresizingMask = UIViewAutoresizingFlexibleWidth; 

http://developer.apple.com/iPhone/library/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/instp/UIView/autoresizingMask

मूल रूप से क्या आप autoresizingMask साथ कर सकते हैं कि आप अपनी मूल दृश्य के भीतर, उस दृश्य की "एंकर" नियंत्रित कर सकते हैं जैसे कि आपने उपयोग कर रहे थे है इंटरफेस बिल्डर

0

सामग्री इन्सेट को सामग्री आकार नहीं बदलना चाहिए, इसे सामग्री ऑफसेट बदलना चाहिए।

सामग्री आकार सेट करने का प्रयास करें, फिर सामग्री इन्सेट करें। UIScrollView के पृष्ठभूमि रंग को भी देखें और इसके पीछे क्या दिखाया जा सकता है। मुझे SetContentSize, setContentInset और addSubview का उपयोग करके UIScrollView में UIImageView को केंद्रित करने में कोई परेशानी नहीं है।

1

ऐप्पल ने आईफोन डेवलपर प्रोग्राम के सभी सदस्यों को 2010 डब्ल्यूडब्ल्यूडीसी सत्र वीडियो जारी किया है।चर्चा की गई विषयों में से एक यह है कि उन्होंने फ़ोटो ऐप कैसे बनाया !!! वे कदम से एक बहुत ही समान ऐप कदम बनाते हैं और सभी कोड मुफ्त में उपलब्ध कराते हैं।

यह निजी एपीआई का भी उपयोग नहीं करता है। मैं गैर प्रकटीकरण समझौते के कारण यहां कोई भी कोड नहीं डाल सकता, लेकिन यहां नमूना कोड डाउनलोड का एक लिंक है। पहुंच प्राप्त करने के लिए आपको शायद लॉगिन करने की आवश्यकता होगी।

http://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?code=y&source=x&bundleID=20645

और, यहाँ आइट्यून्स WWDC पृष्ठ पर एक लिंक है:

http://insideapple.apple.com/redir/cbx-cgi.do?v=2&la=en&lc=&a=kGSol9sgPHP%2BtlWtLp%2BEP%2FnxnZarjWJglPBZRHd3oDbACudP51JNGS8KlsFgxZto9X%2BTsnqSbeUSWX0doe%2Fzv%2FN5XV55%2FomsyfRgFBysOnIVggO%2Fn2p%2BiweDK%2F%2FmsIXj

6

इस कोड को आईओएस के सबसे संस्करणों पर काम करना चाहिए (और ऊपर की तरफ 3.1 पर काम करने के परीक्षण किया गया है, जो कि मेरे पास वर्तमान में पहुंच है)।

यह जोना के जवाब में वर्णित ऐप्पल डब्ल्यूडब्ल्यूडीसी कोड पर आधारित है।

UIScrollView के अपने उपवर्ग के लिए नीचे दिए जोड़ें, और अपनी छवि या टाइल्स युक्त दृश्य के साथ tileContainerView बदल देते हैं:

- (void)layoutSubviews { 
    [super layoutSubviews]; 

    // center the image as it becomes smaller than the size of the screen 
    CGSize boundsSize = self.bounds.size; 
    CGRect frameToCenter = tileContainerView.frame; 

    // center horizontally 
    if (frameToCenter.size.width < boundsSize.width) 
     frameToCenter.origin.x = (boundsSize.width - frameToCenter.size.width)/2; 
    else 
     frameToCenter.origin.x = 0; 

    // center vertically 
    if (frameToCenter.size.height < boundsSize.height) 
     frameToCenter.origin.y = (boundsSize.height - frameToCenter.size.height)/2; 
    else 
     frameToCenter.origin.y = 0; 

    tileContainerView.frame = frameToCenter; 
} 
+0

मैं एक आईपैड ऐप पर काम कर रहा हूं और छवि को केंद्र बनाना चाहता हूं DetailView में दिखाया गया है। मैंने UIScrollView को उपclass नहीं किया है, इसके बजाय इस कोड कोAutorotateToInterfaceOrientation को जोड़ा जाना चाहिए और यह अब दोनों परिदृश्य और पोर्ट्रेट मोड में अच्छा काम करता है। साझा करने के लिए धन्यवाद। – Sushant

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