2012-07-31 14 views
5

तो मैं एक UIView जो एक छाया है है: जगह मेंजोड़ने छाया स्क्रॉल laggy

[containerFrame.layer setShadowOffset:CGSizeMake(0, 1)]; 
[containerFrame.layer setShadowRadius:4.0]; 
[containerFrame.layer setShadowColor:[UIColor colorWithRed:34/255.f green:25/255.f blue:25/255.f alpha:1.0].CGColor]; 
[containerFrame.layer setShadowOpacity:0.4]; 
इस के साथ

, मेरे स्क्रॉल एफपीएस 20-30 के लिए चला जाता है। छाया हटाएं और फिर उछाल दें, मेरा एफपीएस 60 पर वापस है और स्क्रॉलिंग मक्खन जितनी चिकनी है। अब सवाल यह है कि मुझे इस बॉक्स/कंटेनर व्यू के आस-पास एक छाया प्रभाव की आवश्यकता है। स्क्रॉलिंग धीमा किए बिना मैं इसे कैसे प्राप्त करूं?

उत्तर

16

छाया पथ सेट करके देखें:

[containerFrame.layer setShadowOffset:CGSizeMake(0, 1)]; 
[containerFrame.layer setShadowRadius:4.0]; 
[containerFrame.layer setShadowColor:[UIColor colorWithRed:34/255.f green:25/255.f blue:25/255.f alpha:1.0].CGColor]; 
[containerFrame.layer setShadowOpacity:0.4]; 

// New line 
[containerFrame.layer setShadowPath:[UIBezierPath bezierPathWithRect:containerFrame.bounds].CGPath]; 

आप इस दृश्य चेतन करने के लिए है, तो (और विशेष रूप से अगर यह एक UITableViewCell का हिस्सा है) तो आप शायद एनीमेशन में stutters देखेंगे। ऐसा इसलिए है क्योंकि आपके दृश्य के लिए ड्रॉप छाया की गणना करने के लिए कोर एनीमेशन को अपने ड्रॉप के छाया को प्रस्तुत करने के तरीके को जानने के लिए अपने दृश्य के सटीक आकार को निर्धारित करने के लिए ऑफस्क्रीन प्रतिपादन पास करने के लिए कोर एनीमेशन की आवश्यकता है। (याद रखें, आपके विचार किसी भी जटिल आकार संभवतः भी यह में छेद के साथ हो सकता है,।)

On the importance of setting shadowPath से।

+0

मैं त्रिज्या और सामान को पथ के साथ कैसे सेट करूं? – aherlambang

+0

भी रंग और सामान – aherlambang

+0

@aherlambang विवरण –

1

containerFrame.layer.shouldRasterize = YES; सेट धीमा होने का कारण यह है कि छाया की गणना महंगा है। रास्टराइजिंग एक छवि में दृश्य को ध्वस्त कर देगा ताकि यह बहुत तेज़ हो जाएगा।

+0

मैंने इसे rasterizing करने की कोशिश की .. लेकिन यह जितना तेज़ नहीं था उतना तेज़ नहीं है, यह तेजी से – aherlambang

+3

तेज है? क्या यह गंभीरता से आपका मतलब है? – borrrden

+0

तो कौन सा बेहतर है, छायापाथ का उपयोग करके या रास्टरराइज का उपयोग कर? – aherlambang

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