2011-10-11 12 views
9

मेरे पास एक कस्टम समूह यूआईटीबल व्यूसेल है, जिसमें कुछ UILabels हैं। चूंकि UITableViewCell पृष्ठभूमि रंग शुद्ध सफेद होने के लिए उपयोग किया जाता है, इसलिए यह UILabels के डिफ़ॉल्ट पृष्ठभूमि रंग से मेल खाता है, इसलिए UILabel बॉक्स दिखाई नहीं दे रहा था ..आईओएस संस्करण (4.0 से 5.0) के आधार पर अलग-अलग सेल बीजी रंग

आईओएस 5.0 को अपडेट करने के बाद, मुझे लगता है कि अब समूह के लिए डिफ़ॉल्ट पृष्ठभूमि रंग UITableViewCells एक और अधिक ग्रेश सफेद (वास्तव में # f7f7f7) है, और इसके परिणामस्वरूप UILabels का फ्रेम बदसूरत तरीके से दिखाई देता है ..

तो, UILabels के पृष्ठभूमि रंग को सेट करने का सबसे अच्छा तरीका क्या है विभिन्न आईओएस संस्करणों के बीच भिन्नता है? मुझे पता है कि मैं opaque = NO और [UIColor clearcolor] का उपयोग कर सकता हूं, लेकिन मैं प्रदर्शन कारणों से UILabels की पृष्ठभूमि को पेंट करना पसंद करूंगा।

+0

अजीब बात यह है कि मैं इस पुन: पेश नहीं कर सकता है। मैंने एक बहुत ही सरल समूहित UITableView बनाया और सेल पृष्ठभूमि आईओएस 4 और आईओएस 5 (सिम्युलेटर पर) में एक ही ग्रेश रंग हैं। – matt

उत्तर

4

प्रतिनिधि विधि tableView:willDisplayCell: में, UITableViewCell में पृष्ठभूमि रंग सफेद या आईओएस 5, ग्रेश में होगा।

आप अपने सभी सबव्यूज़ के backgroundColor को बदल सकते हैं।

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
    for (UIView* view in cell.contentView.subviews) { 
     view.backgroundColor = cell.backgroundColor; 
    } 
} 
1

आप कॉल कर सकते हैं:

[[UIDevice currentDevice] systemVersion] 

हालांकि कि कारणों की एक बहुत कुछ के लिए हतोत्साहित किया जाता है, और मुझे यकीन है कि यह आपकी समस्या का समाधान करने के लिए सबसे अच्छा तरीका है नहीं कर रहा हूँ। सिद्धांत रूप में, आप व्यू कोड को तैनात करने और कुछ अन्य माध्यमों से लगातार परिणाम प्राप्त करने में सक्षम होना चाहिए।

है कि आप वास्तव में डिवाइस संस्करणों की तुलना करना चाहते हैं, तो आप शायद एक गुण सेट और जब दृश्य नियंत्रक भार, के रूप में अपने cellForRowAtIndexPath भीतर करने का विरोध किया डिवाइस के ओएस की जाँच होगी ...

1

मैं क्या स्थापित किया गया था था सेल के पृष्ठभूमि रंग [UIColor whiteColor] में willdisplaycell में ...

इस तरह मैं नियंत्रित करता हूं कि चीजें कैसे दिखती हैं।

3

मैं एक समूहीकृत tableview में अपने कस्टम UITableViewCell में है कि समस्या को देखा मैं बस स्पष्ट करने के लिए लेबल पृष्ठभूमि रंग सेट और कहा कि मेरे लिए यह तय हो गई और iOS4 और iOS5 में काम करता है। मैंने इसे कस्टम सेल कोड में सेट किया है जहां UILabel निम्नानुसार बनाया गया है:

[nameLabel setBackgroundColor:[UIColor clearColor]]; 

उस समस्या के बाद।

4

कुछ भी नहीं gcamp के जवाब के साथ कुछ गलत है, लेकिन अगर तुम दोनों iOS4 और iOS5 पर पृष्ठभूमि सफेद रखने के लिए है, तो पसंद करते हैं तो बस इस कार्य करें:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
    [cell setBackgroundColor:[UIColor whiteColor]]; 
} 
संबंधित मुद्दे