2016-04-25 4 views
3

Ich möchte etwas ähnliches wie tun:Mehrere Attribute (Verschiedene Textgrößen, Schrift und Offset) für UILabel Text in Objective C

enter image description here

der Text festgelegt sind nicht werden sie Änderung zur Laufzeit.

Brauchen Sie Ihre Meinung!

Vielen Dank im Voraus!

+3

sie nur Haufen UILabels sind nicht unterschiedliche Schriftgrößen haben? – UditS

+0

Nein, weil der Text nicht fixiert ist, wird es sich ändern! –

+1

Also, was Sie sagen möchten, ist jedes Mal neue Beschriftung für jeden Text hinzufügen und geben Sie den Rahmen programmatisch? –

Antwort

3

Nach viel suchen, habe ich mit

Ende
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 

    previousRandom = -1; 

    // NEEDY TALL BORING COOL CHEAP AWESOME HANDSOME SEXY SMART SMELLY 
    NSString *strForText = @"NEEDY TALL BORING COOL CHEAP AWESOME HANDSOME SEXY SMART SMELLY HAPPY RICH FUNNY SEXY SMART SMELLY HAPPY RICH FUNNY"; 

    self.labelForText.attributedText = [[NSAttributedString alloc]initWithString:strForText]; 

    NSArray *arrayForText = [self.labelForText.text componentsSeparatedByString:@" "]; 

    for (NSString *str in arrayForText) { 

     [self makeTextRandmolyFocused:self.labelForText andString:str]; 
    } 

} 

// making the $ prefix 
-(void)makeTextRandmolyFocused:(UILabel *)label andString:(NSString *)subString { 

    NSRange range = [label.text rangeOfString:subString]; 

    NSArray *arrayForFontSize = @[@"18",@"11",@"16",@"13",@"14",@"20"]; 
    NSArray *arrayForFontName = @[@"HelveticaNeue-Medium",@"HelveticaNeue-Light",@"HelveticaNeue-Bold",@"HelveticaNeue-Medium",@"HelveticaNeue-Medium",@"HelveticaNeue-Bold"]; 
    NSArray *arrayForBaselineOffset = @[@"2.3",@"1.2",@"2.5",@"1.5",@"3.5",@"0"]; 

    int randomPosition; 

    do { 
     randomPosition = arc4random_uniform(5); 
    } while (randomPosition == previousRandom); 

    previousRandom = randomPosition; 

    NSNumber *baselineOffSet =[NSNumber numberWithUnsignedInteger:[arrayForBaselineOffset[randomPosition] integerValue]]; 

    NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init]; 
    [style setLineSpacing:3.0]; 
    [style setAlignment:NSTextAlignmentCenter]; 

    float spacing = 2.5f; 


    NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] initWithAttributedString:label.attributedText]; 

    [attributedText setAttributes:@{ 
            NSFontAttributeName:[UIFont fontWithName:arrayForFontName[randomPosition] size:[arrayForFontSize[randomPosition] floatValue]], 
            NSBaselineOffsetAttributeName:baselineOffSet, 
            NSParagraphStyleAttributeName:style, 
            NSKernAttributeName:@(spacing) 
            } 
          range:range]; 

    label.attributedText = attributedText; 

} 

, die den Ausgang wie gibt:

enter image description here