प्रस्तुत नहीं होता है। मुझे CALayer.contents
में एक छवि दिखाने के लिए एक दुष्ट समय है। ऐसा लगता है कि यह सीधे आगे बढ़ता है लेकिन मैं छवि को प्रस्तुत करने के लिए कोई फर्क नहीं पड़ता कि मैं क्या करता हूं। CALayer
ठीक है क्योंकि मैं इसके पृष्ठभूमि रंग और कोने त्रिज्या देख सकता हूं, लेकिन छवि लोड नहीं होगी।CALayer.contents में UIImage को चित्रित करने से छवि डेटा
क्या आप यहाँ देख रहे हैं एक मुखौटा लागू किए गए एक CAGradientLayer
उपवर्ग है। आंतरिक वर्ग वह स्थान है जहां मैं छवि को दिखाना चाहता हूं, और इसे CAGradientLayer
सबक्लास के उपनगर के रूप में जोड़ा जाता है।
इसे सेट करने के लिए कोड बहुत सरल है। init
में:
- (void)setImage:(UIImage *)image {
self.imageLayer.contents = (id)image.CGImage;
[self.imageLayer setNeedsDisplay];
}
अंत में
, setFrame
भीतर:
self.imageLayer = [CALayer layer];
self.imageLayer.cornerRadius = kDefaultCornerRadius;
self.imageLayer.backgroundColor = [UIColor darkGrayColor].CGColor;
[self addSublayer:self.imageLayer];
फिर
पर बाद में, मैं छवि सेट
CGFloat imageSize = self.bounds.size.width - 2*kDefaultMargin;
[self.imageLayer setBounds:CGRectMake(0.0, 0.0, imageSize, imageSize)];
[self.imageLayer setPosition:CGPointMake(self.bounds.size.width/2.0f, kDefaultMargin + imageSize/2.0f)];
[self.imageLayer setNeedsDisplay];
बातें मैं पहले से ही पता है या जाँच कर ली है:
- परत ओबीवी है दृश्यमान रूप से स्पष्ट रूप से स्पष्ट रूप से स्पष्ट रूप से जोड़ा गया।
- छवि जोड़ा और काम करता है।
[UIImage imageNamed:@"info.png"]
कोड में कहीं और इस्तेमाल किया जा रहा है और वास्तव में शो और छवि। यह 16x16 पर 1x और 32x32 पर 2x - कोड को सही तार्किक क्रम में कहा जा रहा है:
init
,setImage:
,setFrame
;
यहां क्या हो रहा है?
[इस सवाल] में समान समस्या और समाधान (http://stackoverflow.com/q/10060912/1218876)। '[Self.imageLayer setNeedsDisplay]' को कॉल न करें। –
वास्तव में, कृपया इसे एक उत्तर दें, कोई टिप्पणी नहीं, इसलिए मैं इसे स्वीकार कर सकता हूं। – coneybeare