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 は、各行で必要以上に高くなり、右側の矢印インジケーターと垂直方向に整列しなくなりました。