UITableView पृष्ठभूमि का रंग हमेशा आईपैड पर ग्रे होता है


128

जब मैंने backgroundColorअपने लिए सेट किया तो UITableViewयह आईफोन (डिवाइस और सिम्युलेटर) पर ठीक काम करता है लेकिन आईपैड सिम्युलेटर पर नहीं। इसके बजाय मुझे इसमें शामिल किसी भी रंग के लिए एक हल्के भूरे रंग की पृष्ठभूमि मिलती है groupTableViewBackgroundColor

प्रजनन करने कि प्रक्रिया:

  1. एक नया नेविगेशन-आधारित प्रोजेक्ट बनाएँ।
  2. RootViewController.xib खोलें और तालिका दृश्य शैली को "समूहीकृत" पर सेट करें।
  3. इस उत्तरदाता को RootViewController में जोड़ें:

    - (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor blackColor];
    }
  4. सिम्युलेटर एसडीके 3.2 का चयन करें, निर्माण और चलाएं।
  5. आपको एक काली पृष्ठभूमि (डिवाइस और सिम्युलेटर) मिलेगी।
  6. प्रोजेक्ट ट्री में अपने लक्ष्य का चयन करें।
  7. प्रोजेक्ट पर क्लिक करें: iPad के लिए वर्तमान लक्ष्य को अपग्रेड करें।
  8. बनाएँ और चलाएँ।
  9. आपको हल्के भूरे रंग की पृष्ठभूमि मिलेगी।
  10. प्लेन से टेबल व्यू स्टाइल को वापस करें और आपको एक ब्लैक बैकग्राउंड मिलेगा।

आपकी सहायताके लिए धन्यवाद!


2
आह, अब iPhone और iPad यहाँ फिर से iOS6 :-)
Gerd

3
शायद ही कभी इस्तेमाल किए जाने वाले शब्द "पुन: पेश करने के लिए कदम" के लिए ब्रावो! :
कांस्टेंटिनो त्सारोहस

जवाबों:


245

इनमें से किसी एक को आजमाएं।

[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[[UIView alloc] init] autorelease]];

3
मुझे नहीं पता कि क्या साइड इफेक्ट्स हैं लेकिन यह काम करता है! धन्यवाद! self.tableView.backgroundView = nil;
rjobidon

30
बहुत महत्वपूर्ण: यह केवल एसडीके 3.2 के साथ काम करता है। 3.1.3 के साथ पिछड़े संगतता के लिए। और पहले आपको यह देखना होगा कि टेबल दृश्य बैकग्राउंड व्यू प्रॉपर्टी पर प्रतिक्रिया देता है: यदि ([self.tableView रिस्पॉन्सToSelector: @selector (बैकग्राउंड))) self.tableView.backgroundView = nil; अन्यथा आप ऐप क्रैश कर देंगे और अचानक से बाहर निकल जाएंगे, आप मुझ पर भरोसा कर सकते हैं!
rjobidon

1
हां, मैंने उपरोक्त समाधान की कोशिश की और यह मेरे लिए काम कर गया। क्या कोई मुझे बता सकता है कि वास्तव में यह मुद्दा क्या है। जब हम ऐप चलाते हैं, तो इसे बाहर निकाल दिया जाता है?
नवीन

कृपया कोई हमें बताएं कि इस समस्या को हल करने के लिए इसकी आवश्यकता क्यों है?
218 बजे मास्क 8

क्योंकि स्पष्ट रूप से नया ios आपकी पृष्ठभूमि को देखने देता है। कुछ ग्रे दृश्य के लिए इसका सेट क्यों सिर्फ एक मुद्दा है जिसे Apple ने पेश किया। बहुत अजीब, बहुत गूंगा। लेकिन फिर इसके हर दिन कि मैं कुछ अजीब और मूक का सामना करते हुए आईओएस के लिए कोडिंग करते हुए
आलसी कोडर

30

इस समाधान के लिए बहुत बहुत धन्यवाद। मैंने एक UIViewController में IBOutlet के साथ एक UITableView संपत्ति पर इसे लागू किया और यह अच्छी तरह से काम करता है:

[panelTable setBackgroundView:nil];
[panelTable setBackgroundView:[[[UIView alloc] init] autorelease]];
[panelTable setBackgroundColor:UIColor.clearColor]; // Make the table view transparent

मध्यम रेखा के लिए कोई आवश्यकता नहीं है [पैनलटैबल सेटबैकग्राउंड व्यू: [[[यूआईवाईवाईवाई आवंटन] इनिट] ऑटोरेलिज]];
NIKHIL

4
बर्फ़ीली आग: वास्तव में वहाँ है। इसके बिना, आपको टेबल सेल की सीमाओं में अजीब ड्राइंग कलाकृतियां मिलती हैं।
हिल्टन कैंपबेल

6

IPad पर backgroundViewसंपत्ति का उपयोग समूहित तालिकाओं के लिए ग्रे पृष्ठभूमि रंग बनाने के लिए किया जाता है। तो iPad पर समूहीकृत तालिकाओं के लिए पृष्ठभूमि का रंग बदलने के लिए किसी को संपत्ति से nilबाहर करना चाहिए backgroundViewऔर फिर backgroundColorवांछित तालिका दृश्य पर सेट करना चाहिए ।

- (void)viewDidLoad
{
    [super viewDidLoad];

    // If you need to support iOS < 3.2, check for the availability of the
    // backgroundView property.
    if ([self.tableView respondsToSelector:@selector(setBackgroundView:)]) {
        self.tableView.backgroundView = nil;
    }
    self.tableView.backgroundColor = [UIColor whiteColor];
}

हां, पहले आईओएस को सपोर्ट करने के लिए इस चेक को जोड़ा जाना चाहिए।
करीम

2

मुझे लगता है कि यह ध्यान देने योग्य है कि Xcode 6.1 और iOS 8.1 के रूप में, विशेष रूप से iPad के लिए (यदि आप सेल बैकग्राउंड भी सेट करना चाहते हैं) तो ऐसा लगता है कि आपको टेबल बैकग्राउंड और सेल बैकग्राउंड सेट करना होगा।

उदाहरण के लिए, एक iPhone स्टोरीबोर्ड पर आप रंग साफ़ करने के लिए एक सेल सेट कर सकते हैं, फिर पृष्ठभूमि छवि के साथ पारदर्शी तालिका के लिए प्रोग्राम की पृष्ठभूमि छवि सेट करें। हालाँकि अगर आप iPad पर इसी कॉन्फ़िगरेशन को देखने के लिए थे तो कोशिकाएँ स्पष्ट नहीं होंगी। IPad के लिए प्रोग्राम को साफ़ करने के लिए सेल को सेट करना होगा।


मैं Xcode 6.4 और iOS 9.2 पर चलने वाले ऐप्स के लिए इस समस्या को देख रहा हूं। मैंने इंटरफ़ेस बिल्डर में स्पष्ट करने के लिए अपनी (स्थिर) तालिका दृश्य कोशिकाओं के रंग सेट किए, और वे iPhone पर स्पष्ट दिखाई दिए, लेकिन iPad पर वे तब तक सफेद थे जब तक कि मैं अपने दृश्य नियंत्रक की -viewDidLoad:विधि में स्पष्ट करने के लिए कोशिकाओं के पृष्ठभूमि रंग सेट नहीं करता ।
ग्रेग

1

पृष्ठभूमि के लिए बैकग्राउंड और व्यू सेट करने की कोशिश की, कोई भाग्य नहीं था (Xcode 5 iOS7.1 iPad सिम्युलेटर), iPhone के लिए ठीक लग रहा था, लेकिन iPad पर हल्के भूरे रंग की पृष्ठभूमि का रंग ...

सेल के लिए बैकग्राउंडरेलर के साथ काम करना मेरे लिए iOS 7.1 4/2014 पर तय किया गया

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

        static NSString *CellIdentifier = @"ViewSomeTriggerCell";

        // get a cell or a recycled cell
        sictVCViewSomeTriggerCell *cellTrigger = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

        // put a picture and a word in the cell (positions set in .xib)
        NSString * tname = [self.fetchedTriggersArray objectAtIndex:indexPath.row];
        cellTrigger.imageTrigger.image = [UIImage imageNamed:@"icon_appicon.png"];
        cellTrigger.labelName.text = tname;

        // set background color, defeats iPad wierdness
        // http://stackoverflow.com/questions/2688007/uitableview-backgroundcolor-always-gray-on-ipad

        // clearColor is what I wanted, and it worked, also tested with purpleColor
        cellTrigger.backgroundColor =[UIColor clearColor];
        return cellTrigger;

}


0

यदि आपका एप्लिकेशन iPhone और iPad दोनों को लक्षित करता है, तो आप इसे इस तरह कर सकते हैं:

[myTableView setBackgroundColor:[UIColor clearColor]]; // this is for iPhone

if ([[UIDevice currentDevice] userInterfaceIdiom] != UIUserInterfaceIdiomPhone) {
    [myTableView setBackgroundView:nil];
    [myTableView setBackgroundView:[[UIView alloc] init]];
} // this is for iPad only

ध्यान दें कि TableView आबंटित में ARC के लिए ऑटोरेलिज़ नहीं है।


0

यदि आप किसी अन्य UIViewController के लिए एक UIViewController जोड़ रहे हैं, तो आपको UITableView के अलावा ClearColor के लिए अपने दृश्य की पृष्ठभूमि सेट करने की आवश्यकता है या फिर आपको हल्के भूरे रंग के बजाय एक सफेद पृष्ठभूमि मिलेगी।

if ([myViewController.myTableView respondsToSelector:@selector(setBackgroundView:)]) {
    [myViewController.myTableView setBackgroundView:nil];
}
myViewController.myTableView.backgroundColor = [UIColor clearColor];
myViewController.view.backgroundColor = [UIColor clearColor];

0
  • आईपैड 2 का अनुकरण
  • 8.3 के माध्यम से iOS 7.1 चला रहा है
  • XCode 6.3 से निर्मित

उपर्युक्त में से कोई भी मेरे UIViewController-> UITableView के लिए एक एकल XIB का उपयोग करके निर्दिष्ट नहीं किया गया है। जो काम किया, वह पूरे सेटअप को स्टोरीबोर्ड में स्थानांतरित कर रहा था, और आईबी इंस्पेक्टर का उपयोग करके पृष्ठभूमि का रंग सेट कर रहा था।


0

मुझे भी इस तरह की समस्या हुई। UITableViewपृष्ठभूमि रंग हमेशा रहेंगे groupTableViewBackgroundColorकोई फर्क नहीं पड़ता कि मैं क्या निर्धारित किया है।

यह लक्षण इस समस्या की तरह है - दृश्य दिखाई देने से पहले UITableView अपना पृष्ठभूमि रंग रीसेट कर रहा है

जब मैंने initफंक्शन में बैकग्राउंड कलर सेट किया , तो यह सही है। में viewDidLoadऔर viewWillAppearचरण, यह सही है। हालाँकि, में viewDidAppear, पृष्ठभूमि का रंग अपने डिफ़ॉल्ट रंग पर रीसेट है।

स्वीकृत उत्तर अब काम नहीं करता है।

[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[UIView alloc] init]];

यहाँ मेरा समाधान है। बस में tableView की पृष्ठभूमि का रंग सेट viewDidLoadसमारोह के बजाय initया viewWillAppear

- (void)viewDidLoad {
    [super viewDidLoad];
    self.tableView.backgroundColor = [UIColor clearColor];
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.