だから私はこの UILabel を持っているので、最大幅に自動サイズ変更し、停止してから切り捨てたいと思っています。オートサイズの理由は、設定したピクセル数 (10px) だけ右に配置したい別のラベル (日付) があるためです。
UILabel でフレームを使用しようとしましたが、幅を静的に設定するだけでしたが、うまくいかず、サイズを自動調整する必要があります...
以下のスクリーンショット。
だから私はこの UILabel を持っているので、最大幅に自動サイズ変更し、停止してから切り捨てたいと思っています。オートサイズの理由は、設定したピクセル数 (10px) だけ右に配置したい別のラベル (日付) があるためです。
UILabel でフレームを使用しようとしましたが、幅を静的に設定するだけでしたが、うまくいかず、サイズを自動調整する必要があります...
以下のスクリーンショット。
基本的な考え方は、ラベルが長すぎない場合はいつでも収まるサイズを使用し、長すぎる場合は「切り取る」ことです。それは聞こえるほど簡単です。
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];