2013-05-25 5 views
7

मुझे समझ में नहीं आता कि दृश्य में जो छाया जोड़ा गया था उसे कैसे हटाया जाए। मैं इस तरह से एक छाया initWithFrame में मेरे विचार में जोड़ें:आईओएस एक दृश्य से छाया जोड़ें/हटाएं

self.layer.borderWidth = 2; 
self.layer.borderColor = [UIColor clearColor].CGColor; 
self.backgroundColor = [UIColor greenColor]; 
[self.layer setCornerRadius:8.0f]; 
CALayer *layer = self.layer; 
layer.shadowOffset = CGSizeMake(2, 2); 
layer.shadowColor = [[UIColor blackColor] CGColor]; 
layer.cornerRadius = 8.0f; 
layer.shadowRadius = 3.0f; 
layer.shadowOpacity = 0.80f; 
layer.shadowPath = [[UIBezierPath bezierPathWithRect:layer.bounds] CGPath]; 

एप्लिकेशन के निष्पादन में बाद मैं इस दृश्य से छाया निकालना चाहते हैं। मैं का उपयोग कर की कोशिश की है:

layer.hidden = YES; 

या

self.layer.hidden = YES; 

लेकिन इस दृश्य को पूरी तरह से, न सिर्फ जोड़ा छाया छुपाता है।

क्या दृश्य से जोड़ा गया छाया पुनर्प्राप्त करने का कोई तरीका है और फिर इसे छुपाएं? धन्यवाद!

+2

क्या कोई कारण है आप अपने कोड के बीच में 'self.layer' पर इंगित एक स्थानीय' परत' चर घोषित करते हैं? –

+0

मैंने पढ़ा है कि प्रदर्शन कारण के लिए बेहतर हो सकता है UIBezierPath के साथ छाया छाया घोषित करें, है ना? ऐसा करने का सबसे अच्छा अभ्यास है? –

उत्तर

17

मुझे लगता है कि आप अपने CALayer की shadowOpacity संपत्ति का उपयोग कर सकते हैं।

तो यह काम करना चाहिए:

self.layer.shadowOpacity = 0.0; 

CALayer's shadowOpacity documentation page

देखें और अपने छाया उपयोग को दिखाने के लिए:

self.layer.shadowOpacity = 1.0; 
+0

धन्यवाद बहुत उपयोगी मैं इस विकल्प पर विचार नहीं कर रहा हूं, लेकिन प्रदर्शन पर प्रभाव डाल सकता है इस संपत्ति के लक्ष्य को बदलने के बाद निश्चित रूप से निकालने का प्रयास करें? –

6

क्षमा करें, यकीन नहीं सही रास्ता है, लेकिन आपके पास layer shadow के गुणों को बदलने का प्रयास किया? उदाहरण के लिए, इनमें से एक;

layer.shadowOffset = CGSizeMake(0, 0); 
layer.shadowColor = [[UIColor clearColor] CGColor]; 
layer.cornerRadius = 0.0f; 
layer.shadowRadius = 0.0f; 
layer.shadowOpacity = 0.00f; 
0

"परत" है कि आप छिपा बनाने के लिए कोशिश कर रहे हैं उद्देश्य यह है कि आप इसे करने के लिए एक छाया हो रही है की परत एक दृश्य पहलू नहीं है .. केवल परत में ... यह बजाय है के साथ वस्तुओं किसी भी तरह से अवधारणा को भ्रमित करने के लिए भ्रमित, छाया को हटाने का एकमात्र तरीका है जो आपने मूल रूप से किया था, पूर्ववत करने के लिए, कोई परिभाषित संपत्ति नहीं है कि आप केवल एक बूल टॉगल कर सकते हैं और छाया को दूर कर सकते हैं

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