如何将滚动功能添加到UILabel

时间:2012-01-23 06:15:30

标签: iphone objective-c xcode uilabel

在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 个答案:

答案 0 :(得分:107)

使用 UITextView reference)。

它的目的就是做到这一点。禁用编辑,您将获得一个可滚动的标签。

答案 1 :(得分:1)

你可以在UIScrollView上添加你的UILabel像这样也可以这样做---

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用于增加或减少标签大小作为文本。