10

Ich habe eine UITextView und es gibt bestimmte Wörter, die ich mit NSString stringWithFormat, die ich gerne fett werden würde.Wie kann ich einige Wörter in meinem UITextView mit NSMutableAttributedString fett schreiben?

Ich habe mich in Stack Overflow umgesehen und versucht, den Posts zu folgen, aber ich denke, ich verstehe es nicht.

Hier ist, was ich habe das Spiel mit:

NSRange boldedRange = NSMakeRange(0, 4); 
    NSString *boldFontName = [[UIFont fontWithName:@"Helvetica-Bold" size:100]fontName]; 


    NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:self.name]; 

    [attrString beginEditing]; 
    [attrString addAttribute:NSFontAttributeName 
         value:boldFontName 
         range:boldedRange]; 
    [attrString endEditing]; 

    self.resultsTextView.attributedText = attrString; 


    self.resultsTextView.text = [NSString stringWithFormat:@"One day, %@ was taking a walk and saw a %@ boy. He was %@ a %@.", attrString, self.adjective, self.adverb, self.noun]; 
+1

Schon eine Weile da ich mit zugeschrieben Streichern gearbeitet, aber scheint mir, dass Ihr Problem ist, dass Sie setzen 'resultsTextView' auf die zuzulassende Zeichenfolge, aber die nächste Zeile, in der Sie sie setzen, ist auf den nicht zugeordneten' NSString' zurückgestellt. 'NSString' hat keine Attribute, so dass Sie im Grunde 'rückgängig machen' alle zugeschrieben 'Sie' gemacht haben. Wenn ich mich richtig erinnere, kann man weder die Eigenschaften attributedText noch text haben, es ist beides. – AMI289

+0

Siehe Antwort Sie können einen bestimmten Text in textView fett formatieren. –

+0

@KiritModi Ich weiß, dass Sie sich paaren können. Aber siehe Frage, genauer gesagt die letzte Codezeile. Er verwendet schließlich 'NSString' für sein' UITextView' und nicht 'NSAttributedString'. Sie können keinen Text in einem Standard 'NSString' fett formatieren. – AMI289

Antwort

19

Sie können auch festlegen folgende Art und Weise, wenn Sie durch das Setzen eines Wörterbuchs als Ganzes wollen, als Attribut

NSString *strTextView = @"This is some demo Text to set BOLD"; 

NSRange rangeBold = [strTextView rangeOfString:@"BOLD"]; 

UIFont *fontText = [UIFont boldSystemFontOfSize:10]; 
NSDictionary *dictBoldText = [NSDictionary dictionaryWithObjectsAndKeys:fontText, NSFontAttributeName, nil]; 

NSMutableAttributedString *mutAttrTextViewString = [[NSMutableAttributedString alloc] initWithString:strTextView]; 
[mutAttrTextViewString setAttributes:dictBoldText range:rangeBold]; 

[textViewTermsPolicy setAttributedText:mutAttrTextViewString]; 
+0

Was, wenn ich ein anderes Wort neben BOLD fett schreiben wollte? Zum Beispiel: Dies ist ein ** Demo-Text **, um ** BOLD ** festzulegen? –

+0

Ich hoffe, Sie haben das Problem gelöst, mit dem Sie konfrontiert wurden, aber immer noch, wenn Sie nicht einfach "BOLD" durch "Demo Text" ersetzen – channi

6

Verwenden Der folgende Code zum Festlegen der Attributzeichenfolge in TextView.

NSString *infoString [email protected]"I am Kirit Modi from Deesa."; 

    NSMutableAttributedString *attString=[[NSMutableAttributedString alloc] initWithString:infoString]; 

    UIFont *font_regular=[UIFont fontWithName:@"Helvetica" size:20.0f]; 
    UIFont *font_bold=[UIFont fontWithName:@"Helvetica-Bold" size:20.0f]; 

    [attString addAttribute:NSFontAttributeName value:font_regular range:NSMakeRange(0, 4)]; 

    [attString addAttribute:NSFontAttributeName value:font_bold range:NSMakeRange(5, 15)]; 

    [attString addAttribute:NSFontAttributeName value:font_regular range:NSMakeRange(16, infoString.length - 15 - 1)]; 

    [self.txtView setAttributedText:attString]; 

OutPut:

enter image description here

+0

Vielen Dank! Es funktioniert. – Raja

0

Check out @CrazyYoghurt Verbesserung auf @Bbrame und @BenoitJadinon auf dieser vorherigen Frage SO 3586871 Ich habe es seit über einem Jahr mit und es funktioniert super . Eine Einschränkung: Ich glaube nicht, dass Sie die gleiche Zeichenfolge mehrmals fett schreiben können, wenn sie mehr als einmal in Ihrer ursprünglichen Zeichenfolge erscheint. Aber Sie können den Code wahrscheinlich ausgeben, um es zu tun, wenn Sie es wünschen.

2

Wenn Sie auch ein Wort aus dem UITextView filtern und es unterstreichen/die Farbe dieses bestimmten Textes nur dann ändern möchten, können Sie den folgenden Code verwenden.

Hier bekomme ich alle Doc-Text in der Content-Zeichenfolge und Filter einige bestimmte Text in hebräischer Sprache.

NSMutableAttributedString *aStr = [[NSMutableAttributedString alloc]initWithString:content attributes:nil]; 
[aStr addAttribute:NSLinkAttributeName value:@"http://www.apple.com" range:[content rangeOfString:@"מדיניות פרטיות"]]; 
[aStr addAttribute:NSLinkAttributeName value:@"http://www.google.com" range:[content rangeOfString:@"לינק"]]; 
textview.linkTextAttributes = @{NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle)}; 
textview.delegate = (id)self; 

//...You kann wie pro Ihre eigene Farb

[aStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:[content rangeOfString:@"מדיניות פרטיות"]]; 
[aStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:[content rangeOfString:@"לינק"]]; 

// Hier können Sie auch die Tippgeste auf diesem Text hinzufügen. // Tap Geste

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tappedTextView:)]; 
      [textview addGestureRecognizer:tapRecognizer]; 
      [textview setAttributedText:aStr]; 
      textview.textAlignment=NSTextAlignmentRight; 

// Für den Text Lage in der Tippgeste bekommen

-(void)tappedTextView:(UITapGestureRecognizer *)tapGesture 

{ 
    UITextView *textView = (UITextView *)tapGesture.view; 
    CGPoint tapLocation = [tapGesture locationInView:textView]; 
    UITextPosition *textPosition = [textView closestPositionToPoint:tapLocation]; 
    NSDictionary *attributes = [textView textStylingAtPosition:textPosition inDirection:UITextStorageDirectionForward]; 
    NSString *urlStr = attributes[NSLinkAttributeName]; 
    if (urlStr) 

    { 
     //[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",url]]]; 

     PrivacyViewController *next = [PrivacyViewController new]; 
     [self.navigationController pushViewController:next animated:YES]; 
    } 
} 
+0

hat es für mich funktioniert. Danke! –

+0

Ich habe diesen Code verwendet und das funktioniert für mich. Vielen Dank!! –

Verwandte Themen