2009-12-25 3 views
14

मैं इंटरफ़ेस बिल्डर के उपयोग के बिना एक आईफोन ऐप बना रहा हूं। मैं निम्नलिखित मनोर में एक समूहीकृत UITableView की पृष्ठभूमि की स्थापना की है:आईफोन फिक्स्ड-स्थिति UITableView पृष्ठभूमि

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"groupedBackground.png"]];

मैं इस पृष्ठभूमि छवि ठीक करने के लिए इतना है कि यह तालिका कोशिकाओं के साथ स्क्रॉल नहीं होता कोशिश कर रहा हूँ। क्या किसी को भी यह करना आता है?

+0

इंटरफ़ेस बिल्डर के साथ अपनी समस्या क्या है के लिए निरंतर पृष्ठभूमि प्राप्त करने के लिए? –

+0

मैंने थोड़ी देर के लिए इसके साथ गड़बड़ी की, लेकिन पाया कि मैं जो करना चाहता था उसे कोड में लिखना आसान था। मैं भविष्य में इसका उपयोग करने का विरोध नहीं कर रहा हूं। – treblig

उत्तर

1

आप UITableView के नीचे एक अतिरिक्त दृश्य डाल सकते हैं और इसकी पृष्ठभूमि सेट कर सकते हैं, इसलिए यदि UITableView पारदर्शी है - तो आप अपना लक्ष्य प्राप्त करेंगे - इसमें सही पृष्ठभूमि होगी और यह स्क्रॉल नहीं होगी।

self.tableView.backgroundView = [[UIImageView alloc] initWithImage: 
       [UIImage imageNamed:@"background.png"]]; 

तालिका सेल तो पृष्ठभूमि है, जो स्थिर है के शीर्ष पर स्क्रॉल:

+0

इसका मतलब है UITableView अल्फा-ब्लेंडिंग। क्या आपने इस विधि का उपयोग करके कोई प्रदर्शन गिरावट देखी है? –

+0

मैंने इसे एक बहुत ही साधारण मामले पर इस्तेमाल किया और इसलिए किसी भी गिरावट को नहीं देखा है। तो इसे जानने का एकमात्र तरीका यह है कि इसे आजमाएं, इसमें ज्यादा समय नहीं लगना चाहिए। –

+0

हम्म ... यह अच्छा लगता है, लेकिन मुझे अभी भी इसके साथ कुछ समस्याएं हैं। मैंने अपने UITableViewController के ViewDidLoad में निम्न कोड रखा: self.view.backgroundColor = [UIColor clearcolor]; UIImageView * पृष्ठभूमि = [[UIImageView alloc] initWithImage: [UIImage imageNamed: @ "groupedBackground.png"]]; [self.view addSubview: पृष्ठभूमि]; [self.view sendSubviewToBack: पृष्ठभूमि]; चूंकि "पृष्ठभूमि" अभी भी तालिका के भीतर है, यह शेष के साथ स्क्रॉल करता है, और कोशिकाएं पृष्ठभूमि छवि के शीर्ष पर दिखाई नहीं दे रही हैं। – treblig

45

हम यह काम करता है कि बिल्कुल के रूप में आप से पूछना, अगर पृष्ठभूमि रंग का उपयोग कर के बजाय, आप, backgroundView को असाइन इसलिए की तरह लगता है। (यह SDK के संस्करण 3.2 बाद से उपलब्ध है, मेरा मानना ​​है।)

+1

आईओएस 5.1 में काम करने की पुष्टि की गई है।यह उत्तर तालिका दृश्य के पीछे एक सबव्यू जोड़ने की सभी प्रायः विज्ञापित विधि की तुलना में अधिक व्यापक रूप से लागू समाधान होने के कारण आईएमएचओ स्वीकार किया जाना चाहिए (जो कि यदि आप UITableViewController का उपयोग नहीं कर रहे हैं तो केवल ठीक से काम करता है)। –

8

आप इस प्रकार एक पैटर्न छवि का उपयोग कर एक स्थिर पृष्ठभूमि प्राप्त कर सकते हैं:

UIView *patternView = [[UIView alloc] initWithFrame:tableView.frame]; 
patternView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"groupedBackground.png"]]; 
patternView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
tableView.backgroundView = patternView; 
5

एक छोटी सी देर लेकिन शायद सभी दूसरों की तलाश के लिए एक समाधान के लिए।

self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]; 
self.tableView.backgroundColor = [UIColor clearColor]; 

या सिर्फ एक पृष्ठभूमि रंग का उपयोग कर के साथ:: मैं UITableViewController की viewDidLoad विधि में parentViewController फोन करके कि काम मिल सकता है

self.parentViewController.view.backgroundColor = [UIColor scrollViewTexturedBackgroundColor]; 
self.tableView.backgroundColor = [UIColor clearColor]; 

यह मुझे कुछ समय लिया है कि यह पता लगाने की है, लेकिन अब यह एक जादू की तरह काम करता है।

0

उपयोग तेजी से 3.0 में यह नीचे दिए गए कोड tableview

self.tableView.backgroundView = UIImageView(image: UIImage(named: "background.png")!)