Estoy trabajando en una aplicación que tiene muchas UITableViews y estoy tratando de darles un color de fondo con textura. Necesito usar el estilo Agrupado porque no quiero que los encabezados de las secciones floten sobre los campos de texto cuando el usuario se desplaza.Textura de fondo de un UITableView agrupado no se desplazará con la tabla
El problema que tengo es que cuando uso el estilo Agrupado, la textura de fondo no se desplaza con la tabla; permanece en su lugar mientras la tabla se desplaza hacia arriba. Siento que esto es un poco raro y preferiría tener el pergamino de fondo con la mesa, como lo hace en el estilo simple. Desafortunadamente, debido a que no puedo tener las vistas de encabezado flotando encima de todo, eso no parece ser una opción.
¿Alguien ha sido capaz de lograr esto?
Aquí hay un código relevante:
- (void)loadView {
[super loadView];
self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"texturedPattern.png"]];
// this prevents the cells from replicating the background texture
self.tableView.backgroundView = [[UIView alloc] initWithFrame:self.view.bounds];
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
// disable the default grouped border since we're doing it manually with the textField
cell.backgroundView = nil;
cell.backgroundColor = [UIColor clearColor];
}
Y mi vista de la tabla actualmente se ve así:
ACTUALIZACIÓN
Como sugirió Amit Vyawahare, he intentado aplicar la textura de fondo de el fondo de los encabezados y cada celda. Hay dos problemas que son mucho más obvios cuando lo ves en movimiento, pero haré mi mejor esfuerzo.
- En primer lugar, el fondo está siempre visible. He quitado el color de fondo de la mesa para que sea más evidente:
todas partes se ve negro, la textura de fondo de la tableView sería visible y no se desplazará con el tableView. El estilo TableView agrupado inserta el borde de 5 píxeles en cada lado de cada celda y no se puede cambiar. Además, no hay un pie de página debajo de la sección de identificación del personal, e incluso he implementado -tableView:heightForFooterInSection:
para devolver 0.0, pero todavía hay un espacio allí.
- segundo lugar, incluso si fuera capaz de deshacerse de estas lagunas, las texturas no se alinean todos modos. Una vez más, esto es difícil de ver, por lo que he subido una captura de pantalla retina para que sea un poco más fácil:
Esto es más evidente por encima de la sección de contraseña, se puede ver las texturas don No se alinea correctamente y se ve como un "pliegue" en el papel. Lo cual sería genial, supongo, si eso es lo que el cliente quería. Es visible, pero menos obvio en casi todos los bordes de la segunda captura de pantalla. Esto se debe a que la textura es realmente bastante grande: 200x200 (400x400 @ 2x), y hay pequeñas variaciones en el color que no se notan a menos que suceda este tipo de desalineación.
¿Por qué no puedes crear una celda de vestuario con el fondo de textura? – AAV
El fondo con textura es bastante grande, 200x200. Incluso si pudiera aplicarlo en el fondo de cada celda y cada encabezado y pie de página en toda la aplicación, que estoy seguro sería una TONELADA de trabajo, podría decir dónde comenzó cada celda porque la repetición las texturas no se alinearían correctamente. –
200x200 no es grande. Estoy haciendo algo similar es mi proyecto. Cree una celda de vestuario y vacíe toda la información que desee y use esa celda en TableVIew. Si todavía no puede hacerlo, descargue su código y déjeme ver qué tan difícil es hacer mi solución. – AAV