chciałbym podzielić się moją rozwiązanie: Wymaga to podklasy UITableView i dodać obiekt, przez wzgląd na demonstracji nazwijmy to showShadow. Dodaj do tego pliku .h tabeli widoku danych:
@property (nonatomic,assign) BOOL showShadow;
oraz jej odpowiedni @synthesize w pliku .m stworzyć metody getter i setter:
@synthesize showShadow;
Następnie dodać Ivar UIView *shadowView;
do pliku .h widoku tabeli. Teraz w sposobie - (id)initWithFrame:(CGRect)frame
swoje podklasy UITableView dodać następujący fragment kodu założyć, że będzie w końcu rzucić cień:
- (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;
}
I wreszcie pisać setter, aby pokazać/ukryć cień:
-(void)setShowShadow:(BOOL)s{
showShadow = s;
if(s){
[self.superview insertSubview:shadowView belowSubview:self];
}else{
[shadowView removeFromSuperview];
}
}
Dodatkowo, jeśli chcesz, aby przesunąć stolik (z jakiegokolwiek powodu), należy zastąpić metodę -setFrame:
również przesunąć shadowView wraz z nim (ponieważ nie jest w widoku tabeli widoku hierarchii):
-(void)setFrame:(CGRect)frame{
[super setFrame:frame];
shadowView.frame = frame;
}
Pomyślnie włączyłeś cienie! Używaj go tak:
MySubclassedTableView *table = [[MySubclassedTableView alloc]initWithFrame:CGRectMake(20, 200, 280, 200)];
[self.view addSubview:table];
table.showShadow = YES;
UWAGA:
Musisz ustawić właściwość showShadow PO dodać swój widok tabeli, ponieważ linia table.showShadow wezwie linię [self .superview insertSubview: shadowView belowSubview: self]; co wymaga istnienia widoku tabeli.
Czy upewniłeś się, że "clipToBounds" i "maskToBounds" są ustawione na "NO" (odpowiednio dla widoku i warstwy)? – mattjgalloway
Dzięki, koleś, masz rację! Jeśli dodasz odpowiedź, zaznaczę ją jako poprawną odpowiedź. –
Udzielono odpowiedzi. Cieszę się, że to rozwiązało! – mattjgalloway