3

UITableViewCell に複数行の UILabel があります。行間の間隔を制御して、行を少し近づけたいと思います。その「先頭」を制御する唯一の方法は、属性付き文字列を使用することだと読みました。そこで、プレーン テキストではなく属性付きのラベルを作成してこれを行い、次に lineHeightMultiple を 0.7 に設定して行を圧縮しました。

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineHeightMultiple = 0.7;
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
paragraphStyle.alignment = NSTextAlignmentLeft;

NSDictionary *attrs = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"HelveticaNeue-Bold" size:15.0], NSFontAttributeName, paragraphStyle, NSParagraphStyleAttributeName, nil];

NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] initWithString:@"Here is some long text that will wrap to two lines." attributes:attrs];

[cell.textLabel setAttributedText:attributedText];

問題は、ラベル全体が UITableViewCell 内で垂直方向の中央に配置されていないことです。

どうすればこれを修正できますか? 以下の添付ファイルで、私の言いたいことがわかります。「圧縮された」複数行の UILabel は、各行で必要以上に高くなり、右側の矢印インジケーターと垂直方向に整列しなくなりました。

例

4

2 に答える 2

2

行の高さの倍数は、最初の行を含むすべての行の行の高さを変更するため、ラベルのすべてが少し高くなります。本当に必要なのは、行間隔を調整して、2 行目の開始ベース ラインがデフォルトよりも少し近くなるようにすることです。

置き換えてみてください:

paragraphStyle.lineHeightMultiple = 0.7;

と:

paragraphStyle.lineSpacing = -5.0;

行間隔の値を好みに合わせて調整します。

于 2013-02-01T19:57:38.700 に答える