2016-06-20 13 views
2

anwenden Ich möchte Farbverlauf Code erstellen und in dynamische Tabellenansicht Zelle, die Höhe variieren je nach Daten. Ich benutzte Schicht, wenn ich in Schicht der Tabellenzelle hinzufügen werde. Ich brauche eine genaue Tabellenansichtszellenhöhe nach dem Laden der Tabellendaten.wie Farbverlaufsschicht in dynamischer Tabelle Zelle beim Neuladen in ios

-(void)setTableData:(NSMutableArray *)tableData{ 

    tableHeightConstraints.constant = cellHeight * tableData.count; 

    _tableData = tableData; 

    [self.tableView reloadData]; 

    [self layoutIfNeeded]; 

    CAGradientLayer *bgLayer = [self greyGradient]; 
    bgLayer.cornerRadius = 5.0f; 
    bgLayer.frame = CGRectMake(0, 0, self.contentView.frame.size.width, self.contentView.frame.size.height); 
    self.backgroundImageViewTc.image = [self greyImageFromGradient:bgLayer]; 

    [self layoutIfNeeded]; 
} 


+ (CAGradientLayer*) greyGradient { 

    UIColor *colorOne = [UIColor colorWithWhite:0.9 alpha:1.0]; 
    UIColor *colorTwo = [UIColor colorWithHue:0.625 saturation:0.0 brightness:0.85 alpha:1.0]; 
    UIColor *colorThree  = [UIColor colorWithHue:0.625 saturation:0.0 brightness:0.7 alpha:1.0]; 
    UIColor *colorFour = [UIColor colorWithHue:0.625 saturation:0.0 brightness:0.4 alpha:1.0]; 

    NSArray *colors = [NSArray arrayWithObjects:(id)colorOne.CGColor, colorTwo.CGColor, colorThree.CGColor, colorFour.CGColor, nil]; 

    NSNumber *stopOne = [NSNumber numberWithFloat:0.0]; 
    NSNumber *stopTwo = [NSNumber numberWithFloat:0.02]; 
    NSNumber *stopThree  = [NSNumber numberWithFloat:0.99]; 
    NSNumber *stopFour = [NSNumber numberWithFloat:1.0]; 

    NSArray *locations = [NSArray arrayWithObjects: stopOne, stopTwo, stopThree, stopFour, nil]; 
    CAGradientLayer *headerLayer = [CAGradientLayer layer]; 
    headerLayer.colors = colors; 
    headerLayer.locations = locations; 

    return headerLayer; 

} 

+ (UIImage *) greyImageFromGradient:(CAGradientLayer*) layer{ 

    UIGraphicsBeginImageContext(layer.bounds.size); 
    [layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return image; 
} 

Dieser Code kann nicht genaues Bild erstellen, so dass es Unschärfe hat.

+0

Sie tun Farbe auf die Zelle anwenden möchten oder möchten Sie Höhe der Zelle einstellen? –

+0

Ich möchte Farbverlauf auf dynamische Tabellenzelle anwenden. Frage ist, wie man Gradientenfarbe so erzeugt, dass ich in den Hintergrund der dynamischen Tabellenansichtzelle setzen kann. –

+0

Können Sie mir bitte einen Code zeigen, den Sie gemacht haben? –

Antwort

3

Hier können u ur-Lösung lassen Sie mich finden wissen, ob eine Ausgabe

- (void)tableView:(UITableView)tableView willDisplayCell:(UITableViewCell)cell forRowAtIndexPath:(NSIndexPath *)indexPath{ 

    TVCell mycell = (TVCell)cell; 

    CGSize size = CGSizeMake(mycell.cellBkView.frame.size.width, mycell.cellBkView.frame.size.height); 

    CAGradientLayer *bgLayer = [BackgroundLayer greyGradient]; 
    bgLayer.cornerRadius = 5.0f; 
    bgLayer.frame = CGRectMake(0, 0, size.width, size.height); 
    mycell.cellBkView.backgroundColor = [UIColor colorWithPatternImage:[BackgroundLayer greyImageFromGradient:bgLayer]]; 
} 
+0

Ok, ich habe es WillDisplayCell Methode wird mir genaue dynamische Zelle Höhe Dank. –

+0

wir begrüßen sie –

0

Versuchen Sie diesen Code:

CGFloat cellHeight = [self tableView:self.tableView heightForRowAtIndexPath:indexPath]; 
+0

wo ich diesen Code nach dem Neuladen? und wie bekomme ich indexPath ist es von [self.tableView indexPathsForVisibleRows] –

+0

Ja, wo Sie die Höhe wollen. –

+0

heightForRowAtIndexPath ist nicht verfügbar –

Verwandte Themen