2010-08-07 13 views
7

जोड़ा गया जब मैं इंटरफ़ेस बिल्डर के माध्यम से UIBarButtonItem पर आइकन जोड़ता हूं, तो आइकन सफेद प्रदर्शित होता है। जब मैं एक ही आइकन फ़ाइल प्रोग्रामेटिक रूप से किसी अन्य UIToolbar पर जोड़ता हूं, तो आइकन काला प्रदर्शित होता है। क्यूं कर?आईबी के माध्यम से जोड़ा जाने पर UIBarButtonItem आइकन सफेद, प्रोग्रामेटिक रूप से

UIImage *image = [UIImage imageNamed:@"icon.png"]; 
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button setImage:image forState:UIControlStateNormal]; 
rootViewController.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:reloadButton] autorelease]; 

उत्तर

6

सब कुछ Jongsma कहा सही है, तो आप initWithImage उपयोग करना चाहिए।

अगली समस्या यह नहीं है कि आप UIBarButtonItem बनाते हैं, लेकिन जिस स्थान पर आप इसे असाइन करते हैं। आप इसे UIBarButtonItemStylePlain के साथ बनाते हैं, जो आम तौर पर सफेद में आइकन की रूपरेखा प्रस्तुत करना चाहिए, लेकिन UINavigationItem (बाएं की तरह) के दाएं बार्बटन इटिम को UIBarButtonItemStylePlain की अनुमति नहीं है। यह स्पष्ट रूप से UIBarButtonItemStyleBordered में परिवर्तित हो गया है। सीमावर्ती शैली में आइकन 'जैसा है' प्रदान किया जाता है, जो थोड़ा सा ढाल वाला काला होता है।

मुझे लगता है कि यदि आप एक बार्डर्ड बार बटन पर सफेद रंग चाहते हैं, तो आपको छवि को स्वयं छूना होगा।

+0

लेकिन जब मैं इंटरफ़ेस बिल्डर के माध्यम से इसे जोड़ता हूं तो छवि सफेद में क्यों प्रदर्शित होती है? – tobiasbayer

+0

आप इंटरफ़ेसबिल्डर के माध्यम से इसे सही बार्बटन इटिम के रूप में जोड़ रहे हैं? जब मैं इसका परीक्षण करता हूं तो यह काला दिखाई देता है। – tonklon

+1

छवि 'सफेद' दिखाई देती है, यदि 'UIBarButtonItemStylePlain' का उपयोग किया जाता है, तो यह' UIBarButtonItemStyleBordered' – tonklon

0

अपने कोड में, आप UIButton को UIBarButtonItem के सबव्यूव के रूप में सेट कर रहे हैं। UIBarButtonItem पहले से ही एक बटन है, इसलिए आपको सबव्यूव के रूप में एक और बटन नहीं जोड़ना चाहिए।

इस प्रयास करें: शैली: संदेश

UIImage *image = [UIImage imageNamed:@"icon.png"]; 
rootViewController.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithImage:image] autorelease]; 
+0

'' UIBarButtonItem' initWithImage का जवाब नहीं है: '' लेकिन initWithImage रहे हैं: छवि शैली: UIBarButtonItemStylePlain लक्ष्य: स्वयं कार्रवाई: @selector (कार्रवाई) ' हालांकि, छवि अभी भी सफेद के बजाय काला है। – tobiasbayer

+0

मुझे खेद है, यही मेरा मतलब है। अजीब ... छवि फ़ाइल का वास्तविक रंग क्या है? –

+0

यह http://www.greepit.com/open-source-icons-gcons/open-source-icons.zip (फ़ोल्डर पीएनजी/काला) – tobiasbayer

6

उत्तर: यदि आप इसे सफेद चाहते हैं, तो अपनी छवि को सफेद रंग दें।

विवरण:

UIBarButtonItems एक छोटे से अलग तरीके से व्यवहार कैसे आप उन्हें प्रयोग के आधार पर।

जब एक UIToolbar को जोड़ने:

initWithImage:style:target:action: बनाता है "सफेद माउस" (छवि रंग नजरअंदाज कर दिया है, अपारदर्शी पिक्सेल एक सफेद छवि बनाने के लिए एक मुखौटा के रूप में उपयोग किया जाता है)।
यह bordered और plain शैलियों (लेकिन केवल UIToolbar पर) के लिए सच है।

initWithCustomView: सामान्य रंगीन छवि प्रदर्शित करता है।

एक UINavigationItem को जोड़ने जब:

initWithImage:style:target:action: रंगीन छवियों पैदा करता है और bordered को plain बदल देता है।

+0

के साथ इस उत्तर के लिए धन्यवाद, इसके चारों ओर एक बटन के साथ काला दिखाई देता है। मैं उलझन में हूँ; दोनों [आईओएस एचआईजी] (http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/IconsImages/IconsImages.html#//apple_ref/doc/uid/TP40006556-CH14-SW8) और [UIBarButtonItem API दस्तावेज़] (http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIBarButtonItem_Class/Reference/Reference.html#//apple_ref/occ/instm/UIBarButtonItem/initWithImage:style : लक्ष्य: क्रिया :) बताएं कि छवि को केवल अल्फा मानों का उपयोग करके बटन की उपस्थिति प्राप्त करने के लिए मास्क के रूप में उपयोग किया जाता है। ऐप्पल द्वारा दस्तावेज वास्तविक व्यवहार है? –

+0

(स्पष्टीकरण के लिए: मैं आपके उत्तर के साथ बहस नहीं कर रहा हूं, मैं अपनी खुद की आंखों से अपने स्वयं के आंखों से देख सकता हूं कि आप सही हैं और मैंने आपको अपनी परेशानी के लिए +1 दिया है। लेकिन व्यवहार है ऐप्पल के अपने दस्तावेज़ों की स्थिति से बिल्कुल अलग है, इसलिए मैं स्वाभाविक रूप से उत्सुक हूं कि मुझे कुछ याद आया है या नहीं।) –

+1

मैं भी काफी उलझन में था और इसे समझने में 30 मिनट बिताए। यही कारण है कि मैंने अपना जवाब पोस्ट किया क्योंकि मुझे आशा थी कि किसी को इसका उपयोग मिलेगा। व्यवहार निश्चित रूप से स्पष्ट नहीं है और दस्तावेज़ों के बारे में क्या कहते हैं। – bentford

0

एक ही समस्या थी। मैं प्रसिद्घ कि @ 2X छवियों के बजाय इस्तेमाल किया गया ...

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