मैं कैलियर का उपयोग कर UITableViewCell पर छाया लागू कर रहा हूं।UITableViewCell में CALayer छाया गलत तरीके से खींचा गया
- (void)addShadowToView:(UIView *)view
{
// shadow
view.layer.shadowColor = [[UIColor colorWithWhite:0.0f alpha:0.1f] CGColor];
view.layer.shadowOpacity = 1.0f;
view.layer.shadowOffset = CGSizeMake(0.0f, 3.0f);
view.layer.shadowRadius = 6.0f;
CGRect shadowFrame = view.layer.bounds;
CGPathRef shadowPath = [UIBezierPath bezierPathWithRect:shadowFrame].CGPath;
view.layer.shadowPath = shadowPath;
}
मुद्दा है कि कुछ tableviewcells के लिए, छाया सेल की पूरी चौड़ाई अवधि नहीं करता है:
यहाँ मेरी कोड है। कुछ कोशिकाओं के लिए यह सही होगा, दूसरों के लिए यह दोषपूर्ण होगा। मुझे पता है कि डिवाइस का घूर्णन भी इसे प्रभावित करता है, और टेबलव्यू डेटा को पुनः लोड करने से कभी-कभी इसे हल किया जाता है।
इस समस्या को कम करने का सबसे अच्छा तरीका क्या है (और इसके साथ ही मेरा प्रत्येक घूर्णन आदि पर संपूर्ण तालिका दृश्य को फिर से लोड करने का मतलब नहीं है)? सेल के
उदाहरण नीचे जहां छाया सही ढंग से लागू किया जाता है:
नीचे स्क्रॉल के बाद ही tableview में सेल के नीचे (छाया केवल चौड़ाई के पहले 75% के लिए आवेदन): मैंने ध्यान दिया है मुद्दा कोड की इन पंक्तियों से कारण होता है:
CGRect shadowFrame = view.layer.bounds;
CGPathRef shadowPath = [UIBezierPath bezierPathWithRect:shadowFrame].CGPath;
view.layer.shadowPath = shadowPath;
अगर मैं le उन्हें बाहर निकालो, सबकुछ ठीक है। लेकिन मुझे बताया गया है कि इसका उपयोग करते समय कुछ प्रदर्शन लाभ है। किसी तरह छाया सही ढंग से घूर्णन के बाद नए आयाम के लिए लागू नहीं है ..
ऐसा लगता है कि आप इस पर कॉल कर रहे सेल की सीमा सही आकार के लिए सेट किया गया है से पहले। आप ऑटो लेआउट उपयोग कर रहे हैं तो आप अपने 'UITableViewCell' उपवर्ग में layoutSubviews' अधिभावी' और 'बुला super.layoutSubviews() के बाद वहाँ बुला की कोशिश कर सकते' – beyowulf
@beyowulf वास्तव में यह पहले से ही है UITableViewCell की एक sublclass और इस विधि layoutSubViews से कहा जाता है । मैंने इसे छाया पथ लगाने के लिए नीचे खोज लिया है, संपादन देखें। – edwardmp