Mittwoch, Januar 29, 2020

UILabel text-Farbe, die basierend auf benutzerdefinierten linearen Farbverlauf

So, ich möchte die text-Farbe für das UILabel, basierend auf einem Gradienten in photoshop gemacht. Ich habe die rgb-Werte für die Gradienten, {211,119,95} und {199,86,56}. Ist das möglich? Wie kann ich es tun?

  • was bedeutet „basierend auf einem Gradienten“ bedeuten?
  • u verwenden kann coretext und ziehen Sie den text urself.
  • Also meine Schriftfarbe wurde in photoshop gemacht, mit einem Farbverlauf, so habe ich diese beiden Sätze von Werten der rgb-Werte verwendet, um zu erhalten eine bestimmte Farbe.
InformationsquelleAutor Carmichael | 2013-04-09

2 Kommentare

  1. 13

    Anderen Weise, wenn Sie wollen target iOS 6+, mit einer Kategorie UIColor

    Erstellen Sie ein UIColor aus einem Verlauf:

    + (UIColor*) gradientFromColor:(UIColor*)c1 toColor:(UIColor*)c2 withHeight:(int)height
    {
      CGSize size = CGSizeMake(1, height);
      UIGraphicsBeginImageContextWithOptions(size, NO, 0);
      CGContextRef context = UIGraphicsGetCurrentContext();
      CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
    
      NSArray* colors = [NSArray arrayWithObjects:(id)c1.CGColor, (id)c2.CGColor, nil];
      CGGradientRef gradient = CGGradientCreateWithColors(colorspace, (CFArrayRef)colors, NULL);
      CGContextDrawLinearGradient(context, gradient, CGPointMake(0, 0), CGPointMake(0, size.height), 0);
    
      UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    
      CGGradientRelease(gradient);
      CGColorSpaceRelease(colorspace);
      UIGraphicsEndImageContext();
    
      return [UIColor colorWithPatternImage:image];
    }

    Dann mit attrString als Ihre NSMutableAttributeString:

    [attrString addAttribute:NSForegroundColorAttributeName value:[UIColor gradientFromColor:[UIColor greenColor] toColor:[UIColor redColor] withHeight:labelView.height] range:defaultRange];
    labelView.attributedString = attrString;

    oder einfach legen Sie die Textfarbe, wenn Sie nicht auch brauchen, Schlaganfälle oder andere styling-Effekt

    labelView.textColor = [UIColor gradientFromColor:[UIColor greenColor] toColor:[UIColor redColor] withHeight:labelView.height];

    Und voila, es funktioniert besser mit UILabel über eine Zeile, ansonsten musst du zur Berechnung der Zeilenhöhe von Ihrer Schrift (UIFont.führende) und übergeben es der Methode, wird der hintergrund vertikal wiederholen.

Kostenlose Online-Tests