मैं अपने समाधान साझा करना चाहते हैं: इस 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: छाया दृश्य नीचे देखें सबव्यू: स्वयं]; जिसके लिए तालिका दृश्य मौजूद होना आवश्यक है।
आप यह सुनिश्चित करें कि 'clipToBounds' और' 'maskToBounds' NO' करने के लिए (दृश्य के लिए और क्रमशः परत) स्थापित कर रहे हैं की है? – mattjgalloway
धन्यवाद लड़का, तुम सही हो! यदि आप कोई उत्तर जोड़ते हैं तो मैं इसे सही उत्तर के रूप में चिह्नित करूंगा। –
उत्तर दिया। खुशी है कि यह हल हो गया! – mattjgalloway