Me gustaría compartir mi solución: Para ello, debe subclase UITableView y añadir una propiedad, por el bien de la demostración vamos a llamarlo showShadow. Agregue esto a su archivo .h de vista de tabla:
@property (nonatomic,assign) BOOL showShadow;
y su correspondiente @synthesize en el archivo .m para crear métodos getter y setter:
@synthesize showShadow;
añadiendo además un Ivar UIView *shadowView;
al archivo .h de la vista de tabla. Ahora en el método de - (id)initWithFrame:(CGRect)frame
su subclase UITableView añadir el siguiente fragmento de código para configurar el punto de vista que eventualmente emitir la sombra:
- (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;
}
Y, finalmente, escribir el método de selección para mostrar/ocultar la sombra:
-(void)setShowShadow:(BOOL)s{
showShadow = s;
if(s){
[self.superview insertSubview:shadowView belowSubview:self];
}else{
[shadowView removeFromSuperview];
}
}
además si le gustaría que mover la mesa (por cualquier razón), se debe reemplazar el método -setFrame:
para mover también el shadowView junto con él (ya que no está en la vista de tabla jerarquía de la vista):
-(void)setFrame:(CGRect)frame{
[super setFrame:frame];
shadowView.frame = frame;
}
Habilitado correctamente las sombras! Utilizar de esta manera:
MySubclassedTableView *table = [[MySubclassedTableView alloc]initWithFrame:CGRectMake(20, 200, 280, 200)];
[self.view addSubview:table];
table.showShadow = YES;
ADVERTENCIA:
Hay que establecer la propiedad showShadow DESPUÉS de agregar la vista de tabla, ya que la línea table.showShadow se llame a la línea de [auto .superview insertSubview: shadowView belowSubview: self]; que requiere que la vista de tabla sea existente.
¿Se ha asegurado de que 'clipToBounds' y' maskToBounds' están establecidos en 'NO' (para la vista y la capa, respectivamente)? – mattjgalloway
Gracias chico, tienes razón! Si agrega una respuesta, la marcaré como respuesta correcta. –
Respondido. Me alegro de que lo resolvió! – mattjgalloway