iOSはlabelの高さを動的に計算します
986 ワード
実際の開発では、文字の数に基づいてlabelの高さを計算する問題によく遭遇します.以下に2つの方法を提供します.
まずlabelを作成します
このlabelのベース幅(200例)を設定し、高さを最大値に設定します.
方法1:labelの内容から高さを計算する(_testStrは文字列)
方法2:labelの適応に基づいて高さを取得する
ダイナミック幅の取得は高さと同じで、ベース幅を最大に設定し、高さを固定すればよいだけです
まずlabelを作成します
_atest = [[UILabel alloc]initWithFrame:CGRectZero];
_atest.numberOfLines = 0;
_atest.lineBreakMode = NSLineBreakByWordWrapping;
このlabelのベース幅(200例)を設定し、高さを最大値に設定します.
CGSize baseSize = CGSizeMake(200, CGFLOAT_MAX);
方法1:labelの内容から高さを計算する(_testStrは文字列)
CGSize labelsize = [_testStr
boundingRectWithSize:baseSize
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:15.0]}
context:nil].size;
_atest.height = labelsize.height;
方法2:labelの適応に基づいて高さを取得する
CGSize labelsize = [_atest sizeThatFits:baseSize];
_atest.height = labelsize.height;
ダイナミック幅の取得は高さと同じで、ベース幅を最大に設定し、高さを固定すればよいだけです
CGSize baseSize = CGSizeMake(CGFLOAT_MAX, 200);