Highlight nur den Text in einem UILabel

Ich versuche, die Hintergrundfarbe einzustellen / nur den Text innerhalb eines @ hervorzuhebeUILabel. Das Problem ist, dass die Zeilenumbrüche und Leerzeichen zum @ hinzugefügt werdeUILabel, um den Text zentriert zu halten, werden ebenfalls hervorgehoben.

Beachten Sie den Abstand vor der letzten Zeile imUILabel ist markiert. Außerdem werden der Anfang und das Ende neuer Zeilen hervorgehoben.

Ich erstelle das obige Beispiel mit dem folgenden Code:

-(void)createSomeLabel {
    // Create and position my label
    UILabel *someLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,
                                                                   0,
                                                                   self.view.frame.size.width - 40,
                                                                   self.view.frame.size.height - 300)];
    someLabel.center = CGPointMake(self.view.frame.size.width / 2, self.view.frame.size.height / 2);
    someLabel.textAlignment = NSTextAlignmentCenter;
    someLabel.textColor = [UIColor whiteColor];
    someLabel.lineBreakMode = NSLineBreakByWordWrapping;
    someLabel.numberOfLines = 0;
    [self.view addSubview:someLabel];

    // This string will be different lengths all the time
    NSString *someLongString = @"Here is a really long amount of text that is going to wordwrap/line break and I don't want to highlight the spacing. I want to just highlight the words and a single space before/after the word";

    // Create attributed string
    NSMutableAttributedString *someLongStringAttr=[[NSMutableAttributedString alloc] initWithString:someLongString attributes:nil];

    // Apply background color
    [someLongStringAttr addAttribute:NSBackgroundColorAttributeName
                      value:[UIColor colorWithWhite:0 alpha:0.25]
                      range:NSMakeRange(0, someLongStringAttr.length)];

    // Set text of label
    someLabel.attributedText = someLongStringAttr;
}

Die Ausgabe, die ich erreichen möchte soll nur den Text und die Leerzeichen zwischen den Wörtern markieren, wenn nur ein Leerzeichen vorhanden ist. Die Länge des Textes und die Größe desUILabel wird ständig anders sein, daher ist eine harte Kodierung leider keine Option.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage