2012-01-15 15 views
8

मुझे लगता है कि मुझे यहां कुछ आसान याद आ रहा है। मुझे एक अर्ध-पारदर्शी UIImageView बनाने की आवश्यकता है जो नेविगेशन टूलबार सहित पूरी स्क्रीन को कवर करे। मैं यह कैसे करु?UIImageView जोड़ें जो नेविगेशन बार को कवर करता है

यह मैं क्या करने की कोशिश कर रहा हूँ है ...

enter image description here

उत्तर

17

यह एक संभव समाधान है:

UIImage *image=[UIImage imageNamed:@"whatever.png"]; 
UIImageView *overlay=[[UIImageView alloc] initWithImage:image]; 
overlay.alpha=0.5; 
[[[[UIApplication sharedApplication] delegate] window] addSubview:overlay]; 

संपादित करें:

  • ऐसा नहीं है कि संभावना है आप ओवरले के लिए अल्फा मान सेट नहीं करेंगे, बल्कि एम्बेडेड पारदर्शिता एल के साथ एक पारदर्शी पीएनजी का उपयोग करें evels। फिर भी, यह एक संभावना है।
  • एआरसी का उपयोग नहीं करते समय, आपको [overlay release] होना चाहिए।
+1

Default.png इस तरह के उदाहरण के लिए चुनने के लिए एक अजीब फ़ाइल का एक छोटा सा हिस्सा है .. अंतिम पंक्ति आवश्यक नहीं है, addSubview सभी अन्य सबव्यू के शीर्ष पर नया सबव्यूव डालता है। –

+0

मैंने यह कोशिश नहीं की है, लेकिन मुझे लगता है कि मैं रोटेशन का पता लगाने में सक्षम नहीं होगा। – Eric

+0

@Eric, यह कोड आपको रोटेशन का पता लगाने से नहीं रोकेगा, न ही यह आपकी मदद करेगा: वर्तमान इंटरफ़ेस/डिवाइस रोटेशन का पता लगाने के लिए आप पर निर्भर है और तदनुसार अपनी ओवरले छवि का चयन करें और रखें। – magma

1

उपर्युक्त उत्तर को थोड़ी देर पर ध्यान केंद्रित करने के लिए, आपको केवल यह स्पष्ट होना होगा कि डिवाइस के स्क्रीन के किन हिस्सों पर विचारों को क्लिप कैसे किया जाता है।

मुख्य बिंदु यह है कि एक नेविगेशन व्यू में, नेविगेशन बार स्वयं आपके [myController view] का हिस्सा नहीं है - आपका व्यू कंट्रोलर का दृश्य बार के नीचे सबकुछ है और उस दृश्य के नीचे आयत में उस दृश्य के नीचे कुछ भी है।

बार, हालांकि, आपके [myAppDelegate window] का हिस्सा है। खिड़की अनिवार्य रूप से आपके डिवाइस की पूरी स्क्रीन है, जबकि विचार उनके विशिष्ट सीमाओं के प्रबंधन के लिए जिम्मेदार उप-भाग हैं। तो [[myAppDelegate window] addSubView:] पर कॉल करना बार के ऊपर प्रदर्शित होगा जहां [[myViewController view] addSubView:] नहीं होगा।

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