2011-09-08 7 views
5

मैं एक एप्लीकेशन विकसित कर रहा हूं जिसमें मैं नीचे इमेज्यूव्यूव्यूसेल पर नीचे दी गई छवि में दिखाए गए छाया प्रभाव बनाना चाहता हूं।uitableviewcell में छाया प्रभाव कैसे बनाएं?

enter image description here

मैं कि किसी भी ट्यूटोरियल या नमूना कोड कैसे कर सकता है? मैंने http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html, http://www.touchthatfruit.com/?tag=uitableview और कुछ अन्य लोगों की जांच की है। लेकिन उनके पास समान ऊंचाई के साथ यूटेबलव्यू के नीचे छाया है। और कैसे तिथि वाले प्रत्येक अनुभाग की साइड सीमाओं पर छाया जोड़ें (संपूर्ण तालिकादृश्य नहीं)। मैं बना सकता हूं नीचे ड्रॉपडाउन छाया। लेकिन प्रत्येक अनुभाग के अंतिम यूटेबलव्यू सेल के किनारे सीमाओं के बारे में क्या है। और एक तरीका छवि बना रहा है और इसे टेबलव्यूसेल की पृष्ठभूमि के रूप में सेट कर रहा है। लेकिन छवि का आकार कैसे बदलें और यह उचित लगेगा क्योंकि प्रत्येक अनुभाग में गतिशील है प्रविष्टियों की संख्या। किसी सेक्शन में केवल 1 प्रविष्टि होती है और अन्य में 15 या अधिक प्रविष्टियां हो सकती हैं। (यहां छवि पूरे अनुभाग के लिए है जिसमें दिनांक शामिल है) .i प्रत्येक अनुभाग की केवल अंतिम तालिकादृश्य के लिए अलग छवि हो सकती है। यह मुझे पता है। लेकिन क्या कोई बेहतर दृष्टिकोण है या इसे प्रोग्रामिक रूप से करते हैं?

उत्तर

0

आप UITableView में छाया प्रभाव के लिए नीचे दिए गए लिंक आप

try this

एक दृश्य की एक मौलिक टुकड़ा यह परत जो एक CALayer है है में मदद मिलेगी उल्लेख कर सकते हैं। आप एक ऐसा दृश्य की परत संपत्ति से पहुंच सकते हैं:

myView.layer

प्रलेखन CALayers में कई गुण है कि छाया नियंत्रित करते हैं। छाया को कास्ट करने के लिए आपको नेविगेशन बार की परत को बताने में सक्षम होना चाहिए। किसी अन्य सामग्री की परतों के साथ-साथ आप छाया डालना चाहते हैं।

myView.layer.shadowOffset 

myView.layer.shadowRadius 

आपके पास इस प्रॉपर्टी

+0

मैं पहले से ही सवाल है कि इस मदद कर मुझे – Bhoomi

+0

मेरी अद्यतन कोड –

+0

मैं यह सब बातें जानना जाँच नहीं कर रहा है में उल्लेख किया है के रूप में। लेकिन मैं जो कह रहा हूं वह इस छवि के अनुसार छाया को क्रेट करने में सक्षम नहीं है। – Bhoomi

0

प्रत्येक अनुभाग हमेशा एक ही आकार होगा उपयोग करने के लिए अपनी परियोजना के लिए QuartzCore ढांचा जोड़ना सुनिश्चित करें की आवश्यकता होगी? यदि ऐसा है तो आप UITableViewCell को ड्रॉपबुक के साथ आइटम जैसी नोटबुक खींचने के लिए उपclass क्यों नहीं करते?

आप अंधेरे कोनों को प्राप्त करने के लिए UITableView पर एक पारदर्शी UIImageView भी जोड़ सकते हैं।

संपादित करें:

इस आशय थोड़ा मुश्किल है, आप कैसे UIBezierPaths उपयोग करने के लिए इस पर गौर करना चाहते करने जा रहे हैं (http://developer.apple.com/library/IOS/#documentation/UIKit/ संदर्भ/UIBezierPath_class/संदर्भ/Reference.html)।

शीर्ष भाग एक छवि (छल्ले और टैब प्रभाव) हो सकता है। फिर आप drawRect फ़ंक्शन में शेष सेल खींच सकते हैं। (परत में छाया गुणों का उपयोग करने से यह अधिक कुशल है जो UITableViewCell में महत्वपूर्ण है)।

आप अपने UITableViewCell क्लास को ओवरराइड करना और कस्टम drawRect: function को कार्यान्वित करना चाहते हैं।

आपके प्रारंभ करने के लिए कुछ कोड है:

// Only override drawRect: if you perform custom drawing. 
    // An empty implementation adversely affects performance during animation. 
    - (void)drawRect:(CGRect)rect 
    { 

     /* Draw top image here */ 

     //now draw the background of the cell. 
     UIBezierPath *path1 = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 320, 50)]; 
     [[UIColor grayColor] set]; 
     [path1 fill]; 

     UIBezierPath *path2 = [UIBezierPath bezierPathWithRect:CGRectMake(0, 52, 320, 50)]; 
     [[UIColor whiteColor] set]; 
     [path2 fill]; 

     UIBezierPath *path3 = [UIBezierPath bezierPathWithRect:CGRectMake(0, 104, 320, 50)]; 
     [[UIColor grayColor] set]; 
     [path3 fill]; 

     UIBezierPath *path4 = [UIBezierPath bezierPathWithRect:CGRectMake(0, 156, 320, 50)]; 
     [[UIColor whiteColor] set]; 
     [path4 fill]; 

     //and so on... 

     //Let's draw the shadow behind the last portion of the cell. 
     UIBezierPath *shadow = [UIBezierPath bezierPathWithRect:CGRectMake(0, 208, 320, 52)]; 
     [[UIColor darkGrayColor] set]; 
     [shadow fill]; 

     //Finally, here's the last cell with a curved bottom 
     UIBezierPath *path5 = [UIBezierPath bezierPath]; 
     [path5 moveToPoint:CGPointMake(0, 208)]; 
     [path5 addLineToPoint:CGPointMake(320, 208)]; 
     [path5 addLineToPoint:CGPointMake(320, 258)]; 
     [path5 addCurveToPoint:CGPointMake(0, 258) controlPoint1:CGPointMake(160, 254) controlPoint2:CGPointMake(160, 254)]; 
     [[UIColor grayColor] set]; 
     [path5 fill]; 
    } 

कोड काफी खींचें और ड्रॉप नहीं है, आप अभी भी सफेद लाइनों को जोड़ने के कुछ आकार ठीक है, और अंतिम सेल और करने के लिए छाया बदलाव करने की जरूरत है बस सही हो। लेकिन यह आपको शुरू करने के लिए पर्याप्त होना चाहिए।

चीयर्स!

+0

यहां प्रत्येक अनुभाग का आकार समान नहीं है। यह अलग और गतिशील भी है। – Bhoomi

+0

अद्यतन प्रश्न देखें – Bhoomi

0

एक ही प्रश्न के लिए मेरे answer पर एक नज़र डालें, यह आपकी समस्या का एक संभावित समाधान हो सकता है! छाया पथ को बदलकर आप वांछित छाया प्रभाव प्राप्त करने में सक्षम होना चाहिए!