UIView

2013-02-18 44 views
10

के बाहर ड्राइंग मेरे पास एक UIView है जहां मैं UIView, के फ्रेम के पिछले भाग को विस्तारित करना चाहता हूं, मैंने मास्क को टॉबाउंड्स को सेट किया है - उम्मीद है कि मैं UIView की सीमाओं के बाहर अतीत खींच सकता हूं दाएं और नीचे 5 पिक्सेल।UIView

मुझे उम्मीद है कि अंडाकार फिसल नहीं पाएगा, लेकिन यह क्लिप हो जाता है और सीमाओं के बाहर नहीं खींचता है?

- (void)drawRect:(CGRect)rect 
{ 

    int width = self.bounds.size.width; 
    int height = self.bounds.size.height; 
    self.layer.masksToBounds = NO; 

    //// Rounded Rectangle Drawing 
    //// Oval Drawing 
    UIBezierPath* ovalPath = [UIBezierPath bezierPathWithOvalInRect: CGRectMake(0, 0, width+5, height+5)]; 
    [[UIColor magentaColor] setFill]; 
    [ovalPath fill]; 
    [[UIColor blackColor] setStroke]; 
    ovalPath.lineWidth = 1; 
    [ovalPath stroke]; 

} 

enter image description here

उत्तर

18

http://developer.apple.com/library/ios/#documentation/general/conceptual/Devpedia-CocoaApp/DrawingModel.html से

UIView और NSView स्वचालित रूप से अपने drawRect से पहले एक देखने के ड्राइंग पर्यावरण कॉन्फ़िगर करें: विधि शुरू हो जाती है। (ऐपकिट फ्रेमवर्क में, ड्राइंग पर्यावरण को कॉन्फ़िगर करने के लिए लॉकिंग फोकस कहा जाता है।) इस कॉन्फ़िगरेशन के भाग के रूप में, व्यू क्लास वर्तमान ड्राइंग वातावरण के लिए ग्राफिक्स संदर्भ बनाता है।

यह ग्राफिक्स संदर्भ, इस तरह के रंग लागू होते हैं, ड्राइंग मोड (स्ट्रोक या भरने) के लिए, लाइन चौड़ाई और शैली जानकारी, फ़ॉन्ट जानकारी के रूप में एक क्वार्ट्ज वस्तु (CGContext) कि जानकारी ड्राइंग प्रणाली की आवश्यकता होती है, है और कंपोजिटिंग विकल्प। (ऐपकिट में, NSGraphicsContext क्लास के ऑब्जेक्ट एक CGContext ऑब्जेक्ट को लपेटता है।) एक ग्राफिक्स संदर्भ ऑब्जेक्ट विंडो, बिटमैप, पीडीएफ फ़ाइल, या अन्य आउटपुट डिवाइस से जुड़ा हुआ है और ड्राइंग की वर्तमान स्थिति के बारे में जानकारी रखता है उस इकाई के लिए पर्यावरण। दृश्य दृश्य विंडो से जुड़े ग्राफिक्स संदर्भ का उपयोग करके एक दृश्य खींचता है। एक दृश्य के लिए, ग्राफिक्स संदर्भ डिफ़ॉल्ट क्लिपिंग क्षेत्र को दृश्य के सीमाओं के साथ मेल करने के लिए सेट करता है और दृश्य की सीमाओं के मूल पर डिफ़ॉल्ट चित्रण उत्पत्ति डालता है।

क्लिपिंग क्षेत्र सेट होने के बाद, आप इसे केवल छोटे बना सकते हैं। तो, आप जो करने की कोशिश कर रहे हैं वह UIView drawRect: में संभव नहीं है।

0

मुझे विश्वास है इससे आपकी समस्या ठीक हो जाएगा नहीं कर रहा हूँ, लेकिन यह कुछ जांच करने के लिए है। आप drawRect दर्ज करते समय प्रत्येक बार self.layer.masksToBounds = NO सेट कर रहे हैं। आपको इसके बजाय केवल एक बार init विधि के अंदर सेट करने का प्रयास करना चाहिए, ए) क्योंकि यह कई बार ऐसा करने के लिए अनावश्यक है और बी) क्योंकि drawRect के बाद इसे स्थापित करने में कोई समस्या हो सकती है - कौन जानता है।

+0

मैंने कोशिश की - काम नहीं किया ... – OneGuyInDc

+0

self.layer.masksToBounds = NO क्लिपिंग में मदद नहीं करेगा – pixelrevision