Tengo un ViewController con un fondo radial degradado. Dentro de eso tengo un UITableView con celdas y secciones. Ahora quiero mostrar el degradado detrás de la vista de tabla mientras se desplaza. El problema es que cuando la sección se bloquea en la parte superior, puede ver las celdas detrás de la sección. Establecería el color de fondo de la sección, pero si lo hago, no coincide con el fondo degradado radial. ¿Hay alguna forma de tener el clip de celdas debajo de las secciones mientras se mantiene el fondo clearColor?UITablevista sección con fondo clearColor?
Respuesta
si lo entiendo, quiere una tabla de visión completamente clara y una celda de tabla para que pueda ver el fondo de su controlador de vista.
Esto se puede conseguir mediante el establecimiento de la tableview como no tener fondo
tableview.backgroundColor = [UIColor clearColor];
tableView.opaque = NO;
tableView.backgroundView = nil;
y también la célula
cell.backgroundColor = [UIColor clearColor]
si también desea que la sección sea transparente, puede utilizar este método:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
para hacer una vista personalizada (por ejemplo, crear una vista de la imagen con un tran t .png para el fondo)
Espero que entienda su pregunta correctamente.
edición después de la clarificación
para dar la apariencia de que las células dejan antes de ir debajo de la sección de encabezado:
crea una clase que es una subclase de UITableView con este Ivar:
@interface CustomTableView : UITableView
{
CAGradientLayer* maskLayer;
}
obviamente, esto creará un gradiente, pero si lo desea, puede modificarlo o usar CALayer
y en lugar de crear la máscara mediante programación, cree un .png con el ancho/alto correcto de su encabezado de sección.
todos modos: si se utiliza el CAGradientLayer
:
- (id)initWithCoder:(NSCoder *)coder
{
self = [super initWithCoder:coder];
if (self)
{
[self setupGradients]; //call your method
}
return self;
}
- (void)setupGradients
{
[self addObserver:self forKeyPath:@"contentOffset" options:0 context:nil];
*/ ***** if you choose to use CALayer instead of CAGradient ****** */
//maskLayer = [[CALayer layer] retain];
//maskLayer.contents = (id) [UIImage imageNamed:@"maskLayer.png"].CGImage;
//maskLayer.backgroundColor = [UIColor clearColor].CGColor;
*/ ***** if you choose to use CALayer instead of CAGradient ****** */
maskLayer = [[CAGradientLayer layer] retain];
CGColorRef outerColor = [UIColor colorWithWhite:1.0 alpha:0.0].CGColor;
CGColorRef innerColor = [UIColor colorWithWhite:1.0 alpha:1.0].CGColor;
maskLayer.colors = [NSArray arrayWithObjects:(id)outerColor,
(id)innerColor, (id)innerColor, (id)outerColor, nil];
maskLayer.locations = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0],
[NSNumber numberWithFloat:0.0],
[NSNumber numberWithFloat:0.9],
[NSNumber numberWithFloat:1.0], nil]; //this creates a gradient effect. Tweak these numbers for a hard line.
maskLayer.bounds = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
maskLayer.anchorPoint = CGPointZero;
self.layer.mask = maskLayer;
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
[CATransaction begin];
[CATransaction setDisableActions:YES];
maskLayer.position = CGPointMake(0, self.contentOffset.y);
[CATransaction commit];
}
entonces en su controlador de vista:
CustomTableView *_tableView; //ivar
_tableView = [[CustomTableView alloc] initWithFrame:YOUR_FRAME];
La idea básica es una máscara, se crea una forma de la máscara en la parte superior de su tableview ese es el mismo tamaño que su encabezado de sección. parecerá que las células "desaparecen" detrás de él. Es un poco complicado, pero funcionará.
Estás entendiendo lo que estoy tratando de lograr pero no el problema que estoy teniendo. El problema es que mis secciones son transparentes para que pueda ver las celdas a medida que pasan detrás de la sección. Esto crea una mezcla de la celda y la sección que se ve terrible. Agradezco la respuesta, aunque, gracias – Bobbake4
ah lo entiendo ahora. Interesante pregunta. Tengo una idea de cómo puedes hacerlo, pero es un poco hacky. Editaré mi respuesta arriba. – sixstatesaway
Forma simple de obtener un encabezado de sección transparente sin crear sus propias vistas de encabezado.
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
if ([view isKindOfClass:[UITableViewHeaderFooterView class]]) {
UITableViewHeaderFooterView *headerView = (UITableViewHeaderFooterView *)view;
headerView.contentView.backgroundColor = [UIColor clearColor];
headerView.backgroundView.backgroundColor = [UIColor clearColor];
}
}
Esta pieza de código funciona perfectamente bien en IOS 7.
EDITAR Sé que esto es un poco tarde, pero junto con esto hay que añadir 2 líneas asegurándose de que el color de fondo (y el color de fondo de la vista de fondo?) del uitableview también es claro.
tableView.backgroundColor = [UIColor clearColor];
tableView.backgroundView.backgroundColor = [UIColor clearColor];
¡Perfecto! funcionó para mí. Muchas gracias –
- 1. UIColor clearColor
- 2. Cargando MPMoviePlayerViewController con fondo transparente?
- 3. OSX/Cocoa - NSScrollView con fondo transparente
- 4. Sección UITableView Encabezado de sección personalizada, problema duplicado
- 5. sección Html5 o no a la sección?
- 6. Fondo de celda y accesorio
- 7. UITableView Sección Antecedentes?
- 8. OpenGL ES 2.0 GLKit con fondo transparente
- 9. problemas de color UITableViewCell con tabla personalizada opinión del fondo
- 10. UITableViewController Imagen de fondo
- 11. Fondo transparente en CoreGraphics
- 12. Sección dentro de una sección - UITableView -
- 13. guardar UIView como archivo png con fondo transparente
- 14. UITableView w/encabezados de sección translúcidos y diferentes fondos de color sección
- 15. Programmáticamente abierto PrefPane con la sección
- 16. Reemplazar la sección crítica con bloqueo SRW
- 17. Lista de Android con encabezados de sección
- 18. ¿Cómo hago una sección crítica con Boost?
- 19. NSTextField fondo transparente
- 20. iPhone UITableView con UISearchBar y el refrescante índice de sección
- 21. ¿Cuál es el color de fondo del encabezado de la sección TableView predeterminado en el iPhone?
- 22. Configuración de CGContext Transparente Fondo
- 23. UITableView color de fondo no cambia
- 24. Agregar una imagen de fondo a UIScrollView
- 25. Establecer una imagen de fondo para UIButton
- 26. Cómo centrar los encabezados de sección de una UITableView
- 27. Personalizar la sección del encabezado para UITableViewController
- 28. Detecta compatibilidad con fondo: tapa
- 29. NetBeans, tema con fondo negro
- 30. Problema con EditarTexto fondo (androide)
¿Puedes publicar una captura de pantalla? Tener dificultades para visualizar esto. –
Puede establecer tableview.backgroundColor = [UIColor clearColor]; – kamleshwar