0

UILabel 内のテキストを縮小しようとしています。私のテキストは文字列です。最大 7 行あり、時には十分ではないため、その 7 行に収まるようにテキストを縮小する必要があります。これが私のコードです。

// create label
    UILabel *desc = [[UILabel alloc] initWithFrame:CGRectMake(5, 220, 310, 200)];
    desc.backgroundColor = [UIColor colorWithRed:0.8 green:0.8 blue:0.8 alpha:1];
    desc.font = [UIFont fontWithName:@"Helvetica" size:30];
    desc.numberOfLines = 7;
    desc.textColor = [UIColor blackColor];
    desc.layer.borderColor = [UIColor blackColor].CGColor;
    desc.layer.borderWidth = 1.0;
    desc.text = // MY string ;
    desc.adjustsFontSizeToFitWidth = YES;
    [self.view addSubview:desc];`

私も試してみました[desc sizeToFit];

私は自分が間違っていることを理解できません。私はすでにこれに関するすべての投稿をチェックしました。

助けてくれてありがとう

4

2 に答える 2

1

ヘルパー関数を使用してサイズを変更できます。 ここに例があります。lineBreakMode を NSLineBreakByWordWrapping に変更しただけです (以前は iOS6 で廃止されたため)。

+ (void)resizeFontForLabel:(UILabel*)aLabel maxSize:(int)maxSize minSize:(int)minSize
{
    // use font from provided label so we don't lose color, style, etc
    UIFont *font = aLabel.font;

    // start with maxSize and keep reducing until it doesn't clip
    for(int i = maxSize; i > 10; i--) {
        font = [font fontWithSize:i];
        CGSize constraintSize = CGSizeMake(aLabel.frame.size.width, MAXFLOAT);

        // This step checks how tall the label would be with the desired font.
        CGSize labelSize = [aLabel.text sizeWithFont:font constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];
        if(labelSize.height <= aLabel.frame.size.height)
            break;
    }
    // Set the UILabel's font to the newly adjusted font.
    aLabel.font = font;
}
于 2013-01-07T02:02:28.153 に答える
0

私の知る限り、UILabelは複数行モードでのフォントサイズの自動計算をサポートしていません。収まるまでフォントサイズを繰り返すことができます。

また見てください

sizeWithFont:forWidth:lineBreakMode:

于 2013-01-07T01:15:06.870 に答える