2012-01-25 4 views
16

पर ड्रॉप छाया जोड़ना मेरे पास एक सादा UITableView (समूहबद्ध नहीं है) है कि मैं बाईं ओर दाईं ओर एक ड्रॉपशैडो जोड़ना चाहता हूं।UITableView

enter image description here

मैं यह कैसे प्राप्त कर सकते हैं? मैंने कोशिश की है:

[self.tableView.layer setShadowColor:[[UIColor whiteColor] CGColor]]; 
[self.tableView.layer setShadowOffset:CGSizeMake(0, 0)]; 
[self.tableView.layer setShadowRadius:5.0]; 
[self.tableView.layer setShadowOpacity:1]; 

लेकिन यह काम नहीं करता है।

+4

आप यह सुनिश्चित करें कि 'clipToBounds' और' 'maskToBounds' NO' करने के लिए (दृश्य के लिए और क्रमशः परत) स्थापित कर रहे हैं की है? – mattjgalloway

+0

धन्यवाद लड़का, तुम सही हो! यदि आप कोई उत्तर जोड़ते हैं तो मैं इसे सही उत्तर के रूप में चिह्नित करूंगा। –

+0

उत्तर दिया। खुशी है कि यह हल हो गया! – mattjgalloway

उत्तर

43

आपको यह सुनिश्चित करना होगा कि clipsToBounds और masksToBounds क्रमशः दृश्य और परत पर NO पर सेट हो जाएं।

self.tableView.clipsToBounds = NO; 
self.tableView.layer.masksToBounds = NO; 
+4

जानकारी के लिए धन्यवाद। लेकिन अगर मैं tableView.layer.masksToBounds = NO सेट करता हूं; और tableView.clipsToBounds = नहीं; , मेरी tableviewcell तालिकादृश्य सीमाओं के ऊपर चलता है। मेरे पास टेबल व्यू, इमेजव्यू मेरे व्यू कंट्रोलर में है। तो कुछ भाग तालिका दृश्य द्वारा उपयोग किया जाता है और कुछ भाग iamgeview द्वारा उपयोग किया जाता है। क्या आप इसके साथ मेरी मदद कर सकते हैं? – iOSAppDev

+0

@iOSAppDev कृपया मेरे उत्तर पर एक नज़र डालें। यह उस समस्या को रोक देगा जो आप चल रहे हैं। –

+2

आप बेहतर UITiewView के पीछे UIView डालते हैं और UIView में छाया जोड़ते हैं। – filou

0

क्या सफेद चमक नहीं है मैं छाया देख रहा हूं? आपके पास ऑफसेट सेट नहीं है, इसलिए यह वही कर रहा है जो आप चाहते हैं। एक छाया के लिए, रंग को काला रंग में सेट करें, और इसे 3,5 या कुछ ऑफसेट ऑफ़सेट दें।

+0

नहीं, वह छवि जो मैंने हासिल करने की कोशिश की है। अब मैं mattjgalloway टिप्पणी के साथ तय कर दिया है। फिर भी धन्यवाद। –

4

मैं अपने समाधान साझा करना चाहते हैं: इस UITableView subclass और इसे showShadow कॉल प्रदर्शन की खातिर कोई प्रॉपर्टी जोड़ते हैं, की आवश्यकता है। मनुष्य और सेटर तरीके बनाने के लिए

@property (nonatomic,assign) BOOL showShadow;

और .m फ़ाइल में उसके संगत @synthesize: अपनी तालिका दृश्य के ज फाइल करने के लिए इस जोड़े

@synthesize showShadow;

फिर एक इवर जोड़ने UIView *shadowView; तालिका दृश्य की .h फ़ाइल में। अब की - (id)initWithFrame:(CGRect)frame विधि में अपने subclassed UITableView का मानना ​​है कि अंत में छाया होगा स्थापित करने के लिए कोड का निम्न भाग जोड़ें:,

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 

     shadowView = [[UIView alloc]initWithFrame:self.frame]; 
     shadowView.backgroundColor = [UIColor whiteColor]; 
     shadowView.layer.shadowOpacity = 0.1; 
     shadowView.layer.shadowOffset = CGSizeMake(3, 3); 
     shadowView.layer.shadowRadius = 1; 



    } 
    return self; 
} 

और अंत में दिखाने के लिए/छाया छिपाने सेटर विधि लिखें:

-(void)setShowShadow:(BOOL)s{ 

    showShadow = s; 

    if(s){ 
     [self.superview insertSubview:shadowView belowSubview:self]; 
    }else{ 
     [shadowView removeFromSuperview]; 
    } 
} 

साथ ही यदि आप तालिका स्थानांतरित करने के लिए (जो भी कारण के लिए), तो आपको -setFrame: विधि ओवरराइड करना चाहिए भी उसके साथ shadowView स्थानांतरित करना चाहते हैं (जैसा कि तालिका दृश्य के दृश्य पदानुक्रम में नहीं है):

-(void)setFrame:(CGRect)frame{ 

    [super setFrame:frame]; 
    shadowView.frame = frame; 

} 

आपने सफलतापूर्वक छाया सक्षम की है! इस तरह यह प्रयोग करें:

MySubclassedTableView *table = [[MySubclassedTableView alloc]initWithFrame:CGRectMake(20, 200, 280, 200)]; 
     [self.view addSubview:table]; 
     table.showShadow = YES; 

चेतावनी:

आप बाद showShadow संपत्ति स्थापित करने के लिए आप अपने तालिका दृश्य जोड़ने क्योंकि लाइन table.showShadow लाइन फोन होगा [स्व .superview insertSubview: छाया दृश्य नीचे देखें सबव्यू: स्वयं]; जिसके लिए तालिका दृश्य मौजूद होना आवश्यक है।

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

  • कोई संबंधित समस्या नहीं^_^