2011-12-21 11 views
6

मैं ऐसे ऐप पर काम कर रहा हूं जिसमें बहुत सारे UITableViews हैं और मैं उन्हें एक बनावट पृष्ठभूमि रंग देने की कोशिश कर रहा हूं। मुझे समूहबद्ध शैली का उपयोग करने की आवश्यकता है क्योंकि मैं नहीं चाहता कि सेक्शन हेडर टेक्स्ट स्क्रॉल पर फ़्लोट करें जब उपयोगकर्ता स्क्रॉल करता है।समूहबद्ध UITableView का पृष्ठभूमि बनावट तालिका के साथ स्क्रॉल नहीं करेगा

मेरी समस्या यह है कि जब मैं समूहबद्ध शैली का उपयोग करता हूं, तो पृष्ठभूमि बनावट तालिका के साथ स्क्रॉल नहीं करती है; यह तालिका के ऊपर स्क्रॉल करते समय यह जगह में रहता है। मुझे लगता है कि यह अजीब तरह का अजीब है और मेरे पास मेज के साथ पृष्ठभूमि स्क्रॉल होगा, जिस तरह से यह सादा शैली में करता है। दुर्भाग्यवश, क्योंकि मेरे पास सब कुछ के शीर्ष पर तैरने वाले शीर्षलेख दृश्य नहीं हो सकते हैं, जो कि एक विकल्प प्रतीत नहीं होता है।

क्या कोई इसे पूरा करने में सक्षम है?

यहाँ कुछ प्रासंगिक कोड है:

- (void)loadView { 
    [super loadView]; 
    self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
    self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"texturedPattern.png"]]; 
    // this prevents the cells from replicating the background texture 
    self.tableView.backgroundView = [[UIView alloc] initWithFrame:self.view.bounds]; 
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 
} 

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
    // disable the default grouped border since we're doing it manually with the textField 
    cell.backgroundView = nil; 
    cell.backgroundColor = [UIColor clearColor]; 
} 

और मेरी तालिका दृश्य वर्तमान में इस तरह दिखता है: Just to give you an idea...

अद्यतन

के रूप में अमित Vyawahare सुझाव दिया है, मैं करने के लिए पृष्ठभूमि बनावट को लागू करने की कोशिश की हेडर और प्रत्येक सेल की पृष्ठभूमि। जब आप इसे गति में देखते हैं तो दो समस्याएं अधिक स्पष्ट होती हैं, लेकिन मैं अपनी पूरी कोशिश करूंगा।

  • सबसे पहले, पृष्ठभूमि हमेशा दिखाई देती है। मैं इसे और अधिक स्पष्ट बनाने के लिए मेज से पृष्ठभूमि रंग हटा दिया है:

Scrolling areas vs. non-scrolling areas

हर जगह आप काला देखते हैं, tableView की पृष्ठभूमि बनावट दिखाई होगा और यह साथ स्क्रॉल नहीं होंगे तालिका देखें। समूहबद्ध तालिका दृश्य शैली प्रत्येक सेल के दोनों तरफ 5 पिक्सेल सीमा डालती है और इसे बदला नहीं जा सकता है। इसके अतिरिक्त, कर्मचारी आईडी अनुभाग के नीचे कोई पाद लेख नहीं है, और मैंने 0.012 लौटने के लिए -tableView:heightForFooterInSection: भी लागू किया है, लेकिन वहां अभी भी एक अंतर है।

  • दूसरा, भले ही मैं इन अंतराल से छुटकारा पाने में सक्षम था, भले ही बनावट किसी भी तरह से लाइन न हो। फिर, यह देखना मुश्किल है, इसलिए मैं यह थोड़ा आसान बनाने के लिए एक रेटिना स्क्रीन शॉट अपलोड कर दिया है:

if you squint, you'll see a totally rad 3d image!

यह पासवर्ड अनुभाग के ऊपर सबसे स्पष्ट है, तो आप बनावट डॉन देख सकते हैं ठीक से संरेखित नहीं है और यह कागज में एक "गुना" की तरह दिखता है। जो अच्छा होगा, मुझे लगता है, अगर ग्राहक यही चाहता था। यह दिखाई देता है, लेकिन दूसरे स्क्रीन शॉट से लगभग हर किनारे पर कम स्पष्ट है। ऐसा इसलिए है क्योंकि बनावट वास्तव में काफी बड़ी है: 200x200 (400x400 @ 2x), और रंग में थोड़ी भिन्नताएं हैं जो ध्यान देने योग्य नहीं हैं जब तक इस तरह का गलत संरेखण होता है।

+0

आप बनावट पृष्ठभूमि के साथ कॉस्ट्यूम सेल क्यों नहीं बना सकते? – AAV

+0

बनावट पृष्ठभूमि वास्तव में काफी बड़ी है, 200x200। यहां तक ​​कि अगर मैं इसे पूरे ऐप में प्रत्येक सेल और हर शीर्षलेख और पाद लेख की पृष्ठभूमि में लागू करने में सक्षम था, जो मुझे यकीन है कि काम का एक टन होगा, तो आप यह बताने में सक्षम होंगे कि प्रत्येक सेल कहां से शुरू हुआ क्योंकि दोहराना बनावट ठीक से लाइन नहीं होगी। –

+0

200x200 बड़ा नहीं है। मैं वही कर रहा हूं मेरी परियोजना है। एक कॉस्टयूम सेल बनाएं जिसमें आप चाहते हैं कि सभी जानकारी डंप करें और उस सेल का उपयोग TableVIew में करें। यदि आप अभी भी ऐसा नहीं कर सकते हैं तो यह आपके कोड को डंप करें और मुझे देखने दें कि मेरा समाधान कितना मुश्किल है। – AAV

उत्तर

0

सबसे पहले अपने UITableViewController को UIViewController द्वारा प्रतिस्थापित करें और इसमें UITableView जोड़ें। ऑटोरेसाइजिंग मास्क को लचीली चौड़ाई/ऊंचाई पर सेट करें। अब आपके पास UITableViewController के बराबर कुछ है, लेकिन दृश्य पदानुक्रम पर अधिक नियंत्रण के साथ।

फिर तालिकादृश्य के नीचे एक दृश्य जोड़ें (वास्तव में: उसमें पहले जोड़ें) जिसमें पृष्ठभूमि है।

अंत में, स्क्रॉलव्यू के प्रतिनिधि को अपनी कक्षा में सेट करें, और तदनुसार अपने पृष्ठभूमि दृश्य को अपडेट करके स्क्रॉल ईवेंट का जवाब दें।

+0

मैंने आपका विचार लिया और इसके साथ भाग गया। –

+0

1. UIViewCiewController के उप-वर्ग से दृश्य को UIViewController के उप-वर्ग में कनवर्ट करें। 2. तालिकादृश्य के पीछे बनावट के साथ एक UIScrollView जोड़ें। 3. scrollView में तालिका दृश्य में 'सामग्री आकार' और 'सामग्री ऑफसेट' में परिवर्तनों को देखें और समन्वयित करें। 4. कुंजीपटल उपस्थिति का निरीक्षण करें और तालिका दृश्य के फ्रेम को संशोधित करें। अब, मैं उस कोड को कक्षा में समेकित करने जा रहा हूं इसलिए मुझे ऐप में हर दृश्य पर इसे दोहराना नहीं है। –

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