2010-09-23 11 views
5

मैं एक कस्टम यूआईसींट्रोल बना रहा हूं जो drawRect: के माध्यम से इसका दृश्य प्रस्तुत करता है। मैं इंटरफेस बिल्डर के माध्यम से अनुकूलन की अनुमति देने के लिए मौजूदा पृष्ठभूमि रंग संपत्ति का उपयोग करना चाहता हूं। हालांकि, अगर पृष्ठभूमि रंग सेट किया गया है, उस समय तक drawRect: कहा जाता है, पूरे आयत पहले ही भर चुका है। मेरे पास opaque = NO और clearsContextBeforeDrawing = YES है। अगर मैं पृष्ठभूमि रंग को साफ़ करने के लिए सेट करता हूं तो मैं केवल उन हिस्सों को प्रस्तुत कर सकता हूं जो मैं चाहता हूं।पृष्ठभूमि का उपयोग करते समय आंशिक रूप से पारदर्शी UIView बनाएं रंग

मैं UIView को पूरे आयत में पृष्ठभूमि से स्वचालित रूप से भरने से कैसे रोकूं?

मुझे यह उल्लेख करना चाहिए कि कस्टम नियंत्रण इंटरफ़ेस बिल्डर में रखा गया है ताकि initWithCoder: ऑब्जेक्ट को तुरंत चालू करने के लिए विधि का उपयोग किया जा रहा है। जो पृष्ठभूमि रंग का उपयोग करता है - -

यह निश्चित रूप से संभव के रूप में यदि आप UIButton से विरासत चाहिए आयत एक चर UIColor *myColor जोड़ने के लिए, में भरा नहीं किया गया है

उत्तर

1

चूंकि यह एक कस्टम नियंत्रण है कि आप, और, में। init विधि, इसे nib से पढ़ा जाने के बाद, myColor = self.backgroundColor, और self.backgroundColor = [UIColor clearColor] सेट करें? फिर स्पष्ट रूप से अपने drawRect में myColor का उपयोग करें।

मैंने यह कोशिश नहीं की है, और यह थोड़ा बदसूरत लगता है, लेकिन शायद यह काम करता है?

2

आप overide की जरूरत है:

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx; 

यह जहां पृष्ठभूमि रंग लागू किया जाता है। यदि आप पृष्ठभूमि रंग को संभालने के लिए दृश्य चाहते हैं, तो सुपर की ड्रॉलेयर विधि को कॉल करें।

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