2010-06-30 24 views
13

बस मेरे आईफोन 3 जीएस पर आईओएस 4 पर स्विच किया गया और मेरे कुछ ऐप्स टूट गए।आईओएस 4 पर UIToolbar टिंट 4

मेरे पास एक मुद्दा यह था कि मेरे पास कुछ बटनों के साथ एक यूआईटीूलबार था, जो गुलाबी रंग के लिए टिंटेड था, जो 3.1.3 ओएस पर अच्छा काम करता था। आईओएस 4 में अपग्रेड करने के बाद, टूलबार अभी भी टिंटेड था, लेकिन इसमें शामिल बटन अब टिंट से प्रभावित नहीं थे। टूलबार गुलाबी था जबकि बटन नियमित-नीले थे।

नेट पर इसके लिए चारों ओर देखा, लेकिन इस तरह की कोई बात नहीं मिली।

कोई भी जानता है कि प्रक्रिया में क्या टूट गया है?

उत्तर

23

(यहां स्पष्ट होना चाहिए - मुझे पोस्ट करने से पहले जवाब पता था, सिर्फ यह नहीं पता था कि इस डेटा को स्टैक ओवरफ्लो में कैसे लोड किया जाए। सोचा कि मुझे जो समाधान मिला वह दूसरों के लिए मूल्यवान था, इसलिए इसे यहां पोस्ट करना चाहता था। नया यहाँ, तो कृपया कोई कठोर आलोचकों :) :)

तो आखिर में समस्या का परिणाम ओएफ में व्यवहार में बदलाव, AFAICT से हुआ।

के रूप में कहा गया है टिंट कोड अपग्रेड से पहले काम किया है और इस तरह से लिखा गया था:

// Toolbar content    
NSArray *items=[NSArray arrayWithObjects: ... ]; // PSEUDO CODE HERE 
[toolbar setItems:items]; 

// Add tint 
toolbar.tintColor = [UIColor colorWithRed:0.83 green:0.43 blue:0.57 alpha:0.5]; 

मैं क्या करने की जरूरत है, सिर्फ बातें का क्रम उलटने गया था:

// Add tint 
toolbar.tintColor = [UIColor colorWithRed:0.83 green:0.43 blue:0.57 alpha:0.5]; 

// Toolbar content    
NSArray *items=[NSArray arrayWithObjects: ... ]; // PSEUDO CODE HERE 
[toolbar setItems:items]; 

(आप तो इंटरफ़ेस बिल्डर में UIToolbar बनाया, आप वहां इसके टिंट को बदल सकते हैं, और यह बटन के लिए भी लागू होता है)।

मुझे लगता है कि टिंट ने आईओएस 4 से पहले सभी बटन अपडेट किए हैं, जबकि आईओएस 4 में यह बटन जोड़ते समय नहीं होता है, वे मौजूदा टिंट की जांच करते हैं। लेकिन यह सिर्फ एक अनुमान है। समाधान किसी भी तरह से काम करता है ..

आशा इस कोई मदद करता है, और है कि मैं किसी भी पवित्र अतः नियम का उल्लंघन नहीं किया ...

चीयर्स!

10

ठीक है, यह एक फीचर की तुलना में ओएस बग की तरह लगता है, क्योंकि जब आप अपने टिंटकॉलर सेट करते हैं तो नेविगेशन बार अपने आइटम का रंग बदलते हैं।

हमने पाया है कि यदि आप आइटम की शैली बदलते हैं, तो यह उनके रंग को साइड इफेक्ट के रूप में रीफ्रेश करता है। निम्नलिखित में हमारे मामले में काम किया। मूल बटन सीमाबद्ध हैं, इसलिए हम उन्हें सादे में बदलते हैं और उन्हें फिर से घुमाने के लिए सेट करते हैं। आप एक अधिक जटिल और जेनेरिक कोड कर सकते हैं जो वर्तमान शैली को बचाता है, दूसरा सेट करता है और फिर वापस स्विच करता है। मैं बस ऐसा करने के लिए आलसी हूँ। : डी वैसे भी, आपको विचार मिलता है।

toolbar.tintColor = //<some dynamically obtained UIColor> 

// Workaround to properly set the UIBarButtonItem's tint color in iOS 4 
for (UIBarButtonItem * item in toolbar.items) 
{ 
    item.style = UIBarButtonItemStylePlain; 
    item.style = UIBarButtonItemStyleBordered; 
} 

सम्मान, रुला।

+0

क्षमा करें, मेरे लिए काम नहीं किया –

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