Ho un ViewController con uno sfondo sfumato radiale. Dentro che ho un UITableView con celle e sezioni. Ora voglio mostrare il gradiente dietro la vista del tavolo mentre scorri. Il problema è che quando la sezione si blocca in alto puoi vedere le celle dietro la sezione. Vorrei impostare il colore di sfondo della sezione, ma se lo faccio non corrisponde allo sfondo sfumato radiale. Esiste comunque la possibilità di inserire le celle sotto le sezioni mantenendo lo sfondo clearColor?Sezione UITableView con sfondo clearColor?
risposta
se ho capito, si desidera una vista tabella e una cella tableview completamente chiare in modo da poter vedere lo sfondo del controller di visualizzazione.
È possibile raggiungere questo impostando la Tableview come privo di sfondo
tableview.backgroundColor = [UIColor clearColor];
tableView.opaque = NO;
tableView.backgroundView = nil;
e anche la cellula
cell.backgroundColor = [UIColor clearColor]
se si desidera anche la sezione di essere trasparente, è possibile utilizzare questo metodo:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
per creare una vista personalizzata (ad esempio creare una vista di immagine con una trasparenza t .png per lo sfondo)
Spero di aver compreso correttamente la tua domanda.
modifica dopo chiarimento
per dare l'apparenza che le cellule smettono prima di andare sotto l'intestazione della sezione:
fare una classe che è una sottoclasse di UITableView con questo Ivar:
@interface CustomTableView : UITableView
{
CAGradientLayer* maskLayer;
}
ovviamente questo creerà un gradiente ma se si volesse si potrebbe modificarlo o utilizzare CALayer
e invece di creare la maschera al livello di programmazione, creare un file .png con la larghezza/altezza corretta dell'intestazione della sezione.
in ogni caso: se si utilizza il 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];
}
poi nel vostro controller della vista:
CustomTableView *_tableView; //ivar
_tableView = [[CustomTableView alloc] initWithFrame:YOUR_FRAME];
L'idea di base è una maschera, si crea una forma maschera sulla parte superiore della vostra Tableview ha le stesse dimensioni dell'intestazione della sezione. sembrerà che le cellule "scompaiano" dietro di esso. È un po 'complicato, ma funzionerà.
Stai capendo cosa sto cercando di ottenere ma non il problema che sto avendo. Il problema è che le mie sezioni sono trasparenti in modo da poter vedere le celle mentre passano dietro la sezione. Questo crea un mix di cella e sezione che sembra terribile. Apprezzo la risposta però, grazie – Bobbake4
ah capisco ora. Domanda interessante Ho un'idea di come puoi farlo, ma è un po 'hacky. Modificherò la mia risposta sopra. – sixstatesaway
Un modo semplice per ottenere un'intestazione di sezione trasparente senza creare le proprie viste di intestazione.
- (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];
}
}
Questo pezzo di codice funziona perfettamente bene in iOS 7.
EDIT So che questo è un po 'tardi, ma insieme a questo si deve aggiungere 2 righe assicurandosi il colore di sfondo (e il colore di sfondo della vista di sfondo?) della uitableview è anche chiaro.
tableView.backgroundColor = [UIColor clearColor];
tableView.backgroundView.backgroundColor = [UIColor clearColor];
Perfetto! ha funzionato per me. Grazie mille –
- 1. Sfondo sezione UITableView?
- 2. UITableView con intestazioni di sezione fissa
- 3. UITableView colore di sfondo iOS 9
- 4. UITableView Intestazione sezione personalizzata, duplicato problema
- 5. Intestazione di sezione UITableView iOS 5
- 6. UITableView Scorrere fino alla sezione
- 7. Intestazione della sezione UITableView non visualizzata
- 8. gradient clearColor in threejs
- 9. Ombra intorno a una sezione di UITableView
- 10. UITableView: Nascondi intestazione dalla sezione vuota
- 11. iPhone Fixed-Position UITableView Sfondo
- 12. Come ridimensionare UITableView in UITableViewController con intestazione di sezione
- 13. Ordina contatti in ordine alfabetico con la Sezione UITableView
- 14. Ottieni la sezione pin di UITableView corrente
- 15. Ottieni l'ultima cella in una sezione Uitableview
- 16. Cambiare colore dell'intestazione della sezione in UITableview
- 17. L'intestazione della sezione UITableView è tutto nero
- 18. Come aggiungere un'intestazione di sezione in UITableView
- 19. Rimozione dei bordi della cella da una sezione di UITableView in stile raggruppato
- 20. UITableView con celle statiche senza cellaForRowAtIndexPath. Come impostare uno sfondo chiaro?
- 21. Scorrimento dell'immagine di sfondo per UITableView?
- 22. Cambia lo sfondo di un UITableView raggruppato
- 23. Ricarica dati di UITableView sullo sfondo
- 24. Texture di sfondo di un UITableView raggruppato non scorrerà con la tabella
- 25. UITableView non cambia
- 26. Colore di sfondo per UISearchController in UITableView
- 27. UIVisualEffectView su UITableView background
- 28. Abilita la modifica di UITableView solo in una sezione specificata
- 29. Utilizza una cella personalizzata diversa per ogni sezione in UITableView
- 30. iOS UITableView Scorrere fino alla fine della sezione
puoi pubblicare una schermata? Avere difficoltà a visualizzare questo. –
È possibile impostare tableview.backgroundColor = [UIColor clearColor]; – kamleshwar