2

だから私はこの UILabel を持っているので、最大幅に自動サイズ変更し、停止してから切り捨てたいと思っています。オートサイズの理由は、設定したピクセル数 (10px) だけ右に配置したい別のラベル (日付) があるためです。

UILabel でフレームを使用しようとしましたが、幅を静的に設定するだけでしたが、うまくいかず、サイズを自動調整する必要があります...

以下のスクリーンショット。

ここに画像の説明を入力

4

2 に答える 2

4

基本的な考え方は、ラベルが長すぎない場合はいつでも収まるサイズを使用し、長すぎる場合は「切り取る」ことです。それは聞こえるほど簡単です。

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(32, 96, 90, 16)];
label.backgroundColor = [UIColor greenColor];
label.font = [UIFont fontWithName:@"Helvetica" size:label.frame.size.height];
label.text = @"Johnny Appleseed";
[label sizeToFit];
[self addSubview:label];

const int CUT_OFF_AT_X = 100;
float labelRight = label.frame.origin.x + label.frame.size.width;
if (labelRight > CUT_OFF_AT_X) {
    label.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, CUT_OFF_AT_X - label.frame.origin.x, label.frame.size.height);
}
labelRight = label.frame.origin.x + label.frame.size.width;

UILabel *badge = [[UILabel alloc] initWithFrame:CGRectMake(labelRight, 96, 90, 16)];
badge.backgroundColor = [UIColor redColor];
badge.font = label.font;
badge.text = @"LEVEL 90";
[badge sizeToFit];
[self addSubview:badge];
于 2013-06-07T03:54:21.920 に答える