: これはのはshowShadowそれを呼ぶことのUITableViewをサブクラス化し、デモンストレーションのために、プロパティを追加する必要があります。 getterメソッドとsetterメソッドを作成するために、.mファイル内
@property (nonatomic,assign) BOOL showShadow;
とそれに対応する@synthesize:あなたのテーブルビューの.hファイルにこれを追加
@synthesize showShadow;
その後IVAR UIView *shadowView;
を追加テーブルビューの.hファイルに追加します。
- (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;
}
そして、最後に、影を隠す/表示するためにsetterメソッドを記述します。 は、今すぐあなたのサブクラスのUITableViewの- (id)initWithFrame:(CGRect)frame
方法で最終的に影を落としますビューを設定するために次のコードを追加します。
-(void)setShowShadow:(BOOL)s{
showShadow = s;
if(s){
[self.superview insertSubview:shadowView belowSubview:self];
}else{
[shadowView removeFromSuperview];
}
}
あなたが(何らかの理由で)テーブルを移動したい場合はまた、あなたはまた、それに伴いshadowViewを移動するために-setFrame:
メソッドをオーバーライドする必要があります(これはテーブルビューのビュー階層ではありませんよう):
-(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;
WARNING:あなたがラインtable.showShadowがラインを呼び出しますので、あなたは、あなたのテーブルビューを追加 AFTER showShadowプロパティを設定する必要が
[自己を.superview insertSubview:shadowView belowサブビュー:自己];テーブルビューが存在する必要があります。
'clipToBounds'と' maskToBounds'が 'NO'(ビューとレイヤーに対してそれぞれ)に設定されていることを確認しましたか? – mattjgalloway
ありがとうございます、あなたは正しいです!あなたが答えを加えると、私はそれを正解とマークします。 –
回答しました。うれしいことにそれを解決! – mattjgalloway