Шрифт за мащабиране на многоредов текст на UILabel, за да пасне на \n

Така че се опитвам да намеря малко текст, за да се побере. Използвах отговора от Преоразмеряване на UILabel да пасне с Word Wrap, за да направи текста подходящ. Това изглежда работи, освен че текстът е силно намален и заема само около 50% от ширината на екрана.

Това е кодът, който се изпълнява, когато е представен контролерът за изглед:

self.user.title = @"Jeffrey C. Louie\n2326 Rockford Road\nCharlestown, MA 02129";
[self.titleLabel setText:self.user.title];

NSInteger fsize = 200;
[self.titleLabel setFont:[UIFont fontWithName:self.titleLabel.font.fontName size:fsize]];

float height = [self.user.title sizeWithFont:self.titleLabel.font constrainedToSize:CGSizeMake(self.titleLabel.bounds.size.width, 99999) lineBreakMode:NSLineBreakByWordWrapping].height;

while (height > self.titleLabel.bounds.size.height && height != 0) {
    fsize -=1;
    [self.titleLabel setFont:[UIFont fontWithName:self.titleLabel.font.fontName size:fsize]];
    height = [self.user.title sizeWithFont:self.titleLabel.font constrainedToSize:CGSizeMake(self.titleLabel.bounds.size.width, 99999) lineBreakMode:NSLineBreakByWordWrapping].height;
}

for (NSString *word in [self.user.title componentsSeparatedByString:@" "]) {
    float width = [word sizeWithFont:self.titleLabel.font].width;
    while (width > self.titleLabel.bounds.size.width && width != 0) {
        fsize -= 3;
        [self.titleLabel setFont:[UIFont fontWithName:self.titleLabel.font.fontName size:fsize]];
        width = [word sizeWithFont:self.titleLabel.font].width;
    }
}

пример за текст, който не отговаря на изгледа правилно

Струва ми се, че текстът е мащабиран, за да побере целия текст на 1 ред, сякаш твърдите прекъсвания на редовете не съществуват. Има ли начин да накарате UILabel да знае, че има прекъсване на реда и да мащабира съответно текста на редовете?

Благодаря


person Jordy    schedule 29.11.2013    source източник


Отговори (1)


можете да използвате RTLabel вместо UILabel и да замените новия знак за ред с <br> таг на html. Като:

RTLabel *label = [[RTLabel alloc] initWithFrame:/*your frame*/];
NSString htmlText = [yourText stringByReplacingOccurrencesOfString:@"\\n" withString:@"<br>"];
[label setText:htmlText];
[yourView addSubView:label];
person Prateek Prem    schedule 29.11.2013