Ich habe einen ViewController mit einem radialen Hintergrund mit Farbverlauf. Darin habe ich eine UITableView mit Zellen und Abschnitten. Jetzt möchte ich den Verlauf hinter der Tabellenansicht beim Scrollen anzeigen. Das Problem ist, dass wenn die Sektion oben gesperrt ist, Sie die Zellen hinter der Sektion sehen können. Ich würde die Schnitthintergrundfarbe einstellen, aber wenn ich das tue, entspricht es dem radialen Steigungshintergrund nicht. Gibt es trotzdem die Möglichkeit, die Zellen unter die Abschnitte zu schneiden, während der ClearColor-Hintergrund beibehalten wird?UITableView Abschnitt mit clearColor Hintergrund?
Antwort
Wenn ich es verstehe, möchten Sie eine vollständig klare Tabellenansicht und Tabellenansicht Zelle, so dass Sie den Hintergrund Ihres View-Controller sehen können.
Sie können dies erreichen, indem die Tableview Einstellung als
tableview.backgroundColor = [UIColor clearColor];
tableView.opaque = NO;
tableView.backgroundView = nil;
und auch die Zelle keinen Hintergrund mit
cell.backgroundColor = [UIColor clearColor]
, wenn Sie auch den Abschnitt wollen transparent sein, Sie diese Methode verwenden können:
, um eine benutzerdefinierte Ansicht zu erstellen (zum Beispiel erstellen Sie eine Bildansicht mit einem transparenten t .png für den Hintergrund)
Ich hoffe, ich verstehe Ihre Frage richtig.
bearbeiten nach Klärung
den Anschein zu erwecken, dass die Zellen, bevor sie unter dem Abschnitt Kopf stoppen:
eine Klasse machen, die eine Unterklasse von UITableView mit diesem Ivar ist:
@interface CustomTableView : UITableView
{
CAGradientLayer* maskLayer;
}
offensichtlich wird dies einen Farbverlauf erstellen, aber wenn Sie wollten, könnten Sie es entweder zwicken oderverwendenund erstellen Sie anstelle der programmgesteuerten Erstellung der Maske ein PNG mit der korrekten Breite/Höhe des Abschnittsheaders.
ANYWAY: Wenn Sie die 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];
}
dann in Ihrem View-Controller:
CustomTableView *_tableView; //ivar
_tableView = [[CustomTableView alloc] initWithFrame:YOUR_FRAME];
Die Grundidee eine Maske ist, können Sie eine Maskenform auf der Oberseite Ihrer Tableview erstellen Das ist die gleiche Größe wie die Abschnittsüberschrift. Es wird erscheinen, dass die Zellen dahinter "verschwinden". Es ist ein bisschen schwierig, aber es wird funktionieren.
Sie verstehen, was ich zu erreichen versuche, aber nicht das Problem, das ich habe. Das Problem ist, dass meine Abschnitte transparent sind, so dass Sie die Zellen sehen können, wenn sie hinter dem Abschnitt vorbeigehen. Dies erzeugt eine Mischung aus Zelle und Abschnitt, die schrecklich aussieht. Ich schätze die Antwort, danke, – Bobbake4
ah verstehe ich jetzt. Interessante Frage. Ich habe eine Vorstellung davon, wie Sie es tun können, aber es ist ein bisschen hacky. Ich werde meine Antwort oben bearbeiten. – sixstatesaway
Einfache Möglichkeit, einen transparenten Abschnitt Header ohne eigene Header-Ansichten zu erstellen.
- (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];
}
}
Dieses Stück Code funktioniert völlig in Ordnung in iOS 7.
EDIT Ich weiß, das ein wenig spät, aber zusammen mit diesem haben Sie 2 Zeilen hinzufügen, um die Hintergrundfarbe sicherstellen (und Hintergrundfarbe der Hintergrundansicht?) des uitableview ist auch klar.
tableView.backgroundColor = [UIColor clearColor];
tableView.backgroundView.backgroundColor = [UIColor clearColor];
Perfekt! es hat für mich funktioniert. Vielen Dank –
- 1. UITableView Abschnitt Hintergrund?
- 2. UIVisualEffectView auf UITableView-Hintergrund
- 3. UITableview Indizierung mit 1 Abschnitt
- 4. UITableview Abschnitt Fehler - objc_msgSend
- 5. UITableView Abschnitt Shadow
- 6. UITableView Abschnitt Kopfzeile nicht angezeigt
- 7. Wie UITableView Abschnitt mit Interface Builder
- 8. UITableView Abschnitt Footer Text mit Swift
- 9. UITableView Abschnitt erscheint über TableHeaderView
- 10. UITableView Abschnitt Index überlappt Suchleiste
- 11. Benutzerdefinierte UITableView Abschnitt Kopfzeilenansichten brechen
- 12. UITableView Stacked/Shadow Hintergrund
- 13. Ändern der Farbe von UITableView Abschnitt Kopfzeilen
- 14. UItableView eine Zelle wiederholt 13 mal in jedem Abschnitt
- 15. Schatten um einen Abschnitt von UITableView
- 16. Erlauben nur bestimmte Abschnitt in UITableView scrollen
- 17. Hintergrund eines gruppierten UITableView ändern
- 18. UITableView Abschnitt Index überlappende Zeile Löschen-Taste
- 19. iPhone Fixed-Position UITableView Hintergrund
- 20. Letzte Zelle in einem UITableview-Abschnitt abrufen
- 21. UITableView Abschnitt Kopfhöhe für nicht gruppierte Tabelle
- 22. UITableView Abschnitt Header überschneiden die angepasste HeaderView?
- 23. Wie UITableView UITableViewStylePlain Abschnitt Kopfzeile Stil imitieren
- 24. UITableView Abschnitt Details Zeichnung falsch auf Bildlauf
- 25. Scroll UITableView zu einem bestimmten Abschnitt
- 26. Wie animiere ich UITableView Abschnitt Fußzeile
- 27. UITableView Abschnitt Kopf kriecht unter Navigationsleiste
- 28. Änderung UITableView Abschnitt Header ohne tableView: titleForHeaderInSection
- 29. EXC_BAD_ACCESS wenn ich versuche, einen UITableView Abschnitt
- 30. UITableView Abschnitt beim Scrollen oben einfügen
können Sie einen Screenshot hochladen? Es ist schwer, dies zu visualisieren. –
Sie können tableview.backgroundColor = [UIColor clearColor]; – kamleshwar