Доступ к последней строке при использовании UILineBreakModeWordWrap UILabel в iPhone - PullRequest
0 голосов
/ 06 января 2012

Я отображаю длинную строку, используя UILabel с UILineBreakModeWordWrap. Он отлично показывает строку, заключая текст в UILabel. Я хочу получить доступ к последней строке UILabel. Кто-нибудь знает, как это сделать на iPhone?

1 Ответ

0 голосов
/ 06 января 2012

Так что я попробовал кое-что и немного искал вокруг.Что вам действительно нужно, так это подсчитать перенос слов и как-то определить последнюю строку.Но я не совсем понял, как это сделать.

Так что мое решение выглядит примерно так:

Ваша строка //I googled some longer String

 NSString *string = @"Standing across the room, I saw you smile\nSaid I want to talk to you-oo-oo for a little while\nBut before I make my move my emotions start running wild\nMy tongue gets tied and that's no lie\nLooking in your eyes\nLooking in you big brown eyes ooh yeah\nAnd I've got this to say to you\nHey!\nGirl I want to make you sweat\nSweat till you can't sweat no more\nAnd if you cry out\nI'm gonna push it some, more, more\nGirl I want to make you sweat\nSweat till you can't sweat no more\nAnd if you cry out\nI'm gonna push it\nPush it, push it some more";

Ваша метка:

UILabel *label          = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 280, 440)];
label.font              = [UIFont fontWithName:@"Helvetica" size:14];
label.lineBreakMode     = UILineBreakModeWordWrap;
label.numberOfLines     = 0;
label.backgroundColor   = [UIColor clearColor];
label.textColor         = [UIColor blackColor];
label.text              = string;

Вызов этого метода:

NSString *result = [self getLastLineFromString:string];
NSLog(@"Result: %@", result);

getLastLineFromString: выглядит так:

- (NSString *)getLastLineFromString: (NSString *)string{
    NSArray *a = [string componentsSeparatedByString:@" "];
    NSString *result = [a objectAtIndex:[a count]-1];
    NSString *temp = @"";
    int count = 1;
    BOOL myBool = YES;
    while (myBool) {
        count++;

        temp = result;
        result = [a objectAtIndex:[a count] -count];
        result = [NSString stringWithFormat:@"%@ %@", result, temp];
        NSLog(@"length: %i",[self lengthOfString:result]);
        NSLog(@"result: %@",result);

    //131 was a value i detected mayels, i guess u have do trick a little around to find a mathcing one for yourself
    if ([self lengthOfString:result] >= 131) {
        myBool = NO;
    }
    }
    return result;
}

А метод lengthOfString: выглядит следующим образом:

- (int)lengthOfString:(NSString *)string{
    CGSize size1 = [string sizeWithFont:[UIFont fontWithName:@"Helvetica" size:14]];
    return size1.width;
}

Вывод:

2012-01-06 16:17:08.341 get length[5472:207] result: it
Push it, push it some more

Я знаю, что это не идеальное решение, но оно может помочь вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...