Как добавить функцию прокрутки в UILabel - PullRequest
33 голосов
/ 23 января 2012

В Xcode я создал UILabel, который будет автоматически изменять размер в зависимости от того, сколько строк текста я на него положил.Но я не хочу, чтобы высота UILabel превышала определенный предел (в моем примере 240), код выглядит так:

NSString *text = @"imagine this is a huge wall of text\n\n\n"
UILabel *myLabel = [[UILabel alloc] init];
[myLabel setNumberOfLines:0];
CGSize labelSize = [text sizeWithFont:myLabel.font constrainedToSize:CGSizeMake(280, 240) lineBreakMode:myLabel.lineBreakMode];
myLabel.frame = CGRectMake(0, 0, 280, labelSize.height);

Это прекрасно работает, когда мой текст находится в пределах 10-15 строк.Но если я добавлю что-то вроде 40 строк текста, дополнительные строки текста выйдут за пределы моей UILabel и будут обрезаны.

Как добавить функцию прокрутки в myLabel, чтобы myLabel по-прежнему имел максимумвысота 240, и я могу просто прокрутить вниз, чтобы просмотреть эти дополнительные строки текста в myLabel?

Ответы [ 2 ]

108 голосов
/ 23 января 2012

Использование UITextView ( ссылка ).

Он предназначен именно для этого. Отключите редактирование, и вы получите прокручиваемый ярлык.

1 голос
/ 23 января 2012

Вы можете добавить свой UILabel в UIScrollView, как это, и может также сделать это ---

scrollView.backgroundColor = [UIColor clearColor];

        UILabel * label = [[UILabel alloc] init];
        [label setNumberOfLines:0];
        label.text=[detailDict valueForKey:@"ABC"];
        [label setFont:[UIFont fontWithName:@"Georgia" size:16.0]];
        CGSize labelsize=[label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(250, 1000.0) lineBreakMode:UILineBreakModeWordWrap];
        int y=0;
        label.frame=CGRectMake(38, y, 245, labelsize.height);
        [label setBackgroundColor:[UIColor clearColor]];
        [label setTextColor:[UIColor whiteColor]];
        scrollView.showsVerticalScrollIndicator = NO;
        y+=labelsize.height;
        [scrollView setContentSize:CGSizeMake(200,y+50)];
        [scrollView addSubview:label];
        [label release];

Здесь Y используется для увеличения или уменьшения размера метки в виде текста.

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