web-dev-qa-db-ja.com

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に追加のテキスト行を表示するために単純にスクロールダウンするにはどうすればよいですか?

34
Shakesbeer

UITextView(- reference )を使用します。

まさにそれを行うように設計されています。編集を無効にすると、スクロール可能なラベルが表示されます。

110
Peter Sarnowski

このように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はテキストとしてラベルサイズを増減するために使用されます。

1
shivangi