2011-10-28 23 views
5

iOS5 में अलग से वर्गीकृत किया UITableViewCell नियमित whiteColor रंग के बजाय tableCellGroupedBackgroundColor रंग का उपयोग करता नतीजतन आईओएस 5 में है, अपने कस्टम कोशिकाओं की पृष्ठभूमि की UITableViewCell (डिफ़ॉल्ट, उपशीर्षक के लोगों के साथ मेल नहीं खाता , वैल्यू 1, वैल्यू 2 स्टाइल सेल)।UITableViewCell पृष्ठभूमि रंग बनाम iOS4

यह सुनिश्चित करने का सबसे अच्छा तरीका क्या है कि उसी पृष्ठभूमि रंग का उपयोग कस्टम UITableViewCell और डिफ़ॉल्ट UITableViewCell (और UILabel और अन्य तत्वों से संबंधित) में किया जाता है) - w.r.t. आईओएस 4 और आईओएस 5 दोनों?

नोट: संपादक में मैं tableCellGroupedBackgroundColor के नाम से एक नया रंग देख सकता हूं, लेकिन इस रंग को प्रोग्रामेटिक रूप से प्राप्त करने के लिए कोई श्रेणी/विधि उपलब्ध नहीं है।

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

आप तकनीक निम्नलिखित अपने सेल पर नियंत्रण की पृष्ठभूमि का रंग बदलने के लिए उपयोग कर सकते हैं, लेकिन इन-मामले कस्टम कोशिकाओं की, तुम कैसे ओएस के आधार पर उपयुक्त पृष्ठभूमि रंग सेट कर सकते हैं (आईओएस 4 बनाम आईओएस 5)?

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

सबसे आसान समाधान (मेरे वर्तमान कार्यान्वित): यह सिर्फ यकीन है कि मेरी सभी कोशिकाओं सफेद पृष्ठभूमि है बनाता है, ओएस पर ध्यान दिए बिना। किसी भी तरह, मुझे cell.contentView.subviews पर सफेद रंग लागू करने की आवश्यकता नहीं है।

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
    [cell setBackgroundColor:[UIColor whiteColor]]; 
} 

उत्तर

3

यहाँ यह करने के लिए एक त्वरित और गंदा तरीका है सकता मानते हुए हम एक ठोस पृष्ठभूमि के साथ काम कर रहे हैं रंग, कोई ग्रेडियेंट या ऐसा कुछ भी नहीं।

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

आईओएस 5 पर, यह लाइनों को अजीब दृष्टि से देखने में मदद कर सकता है। :)

0

वैकल्पिक रूप से आप [UIColor clearColor] करने के लिए अपने subviews के पृष्ठभूमि रंग (लेबल आदि) निर्धारित करते हैं,

+2

यह कोई अच्छा विचार नहीं है कि पृष्ठभूमि के लिए पारदर्शी रंग सेटिंग किसी भी दृश्य को धीमा कर दें। यदि आपको अपारदर्शी में पृष्ठभूमि सेट करने की तुलना में ढाल पृष्ठभूमि की आवश्यकता नहीं है। ऐप्पल ने यही सिफारिश की है और यह भी मेरा अनुभव है ... –

0

आप UITableViewCell उपवर्ग साथ-साथ आप setBackgroundColor अधिरोहण करने का प्रयास कर सकते हैं:

- (void)setBackgroundColor:(UIColor *)backgroundColor { 
    [super setBackgroundColor:backgroundColor]; 
    [[self myLabel] setBackgroundColor:backgroundColor]; 
} 

ऐसा प्रतीत होता है जब यह सेल के लिए डिफ़ॉल्ट पृष्ठभूमि रंग सेट है कि इस विधि आईओएस द्वारा प्रयोग किया जाता है।

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