1. ホーム
  2. ios

[解決済み] UILabelの行間を設定する

2022-12-06 21:38:48

質問

複数行の表示で、行間を変更するには? UILabel ?

どのように解決するのですか?

編集してください。 明らかに NSAttributedString は、iOS 6以降では、それを行うでしょう。を使う代わりに NSString を使ってラベルのテキストを設定する代わりに NSAttributedString を作成し、それに属性を設定し、それを .attributedText としてラベルに設定します。このようなコードになります。

NSMutableAttributedString* attrString = [[NSMutableAttributedString  alloc] initWithString:@"Sample text"];
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
[style setLineSpacing:24];
[attrString addAttribute:NSParagraphStyleAttributeName
    value:style
    range:NSMakeRange(0, strLength)];
uiLabel.attributedText = attrString;

NSAttributedStringの古いattributedStringWithStringは同じことをしましたが、今は その は非推奨とされています。

歴史的な理由から、これが私のオリジナルの答えです。

短い答えです。 できません。テキスト行の間隔を変更するためには、サブクラスの UILabel をサブクラス化し、自分自身で drawTextInRect を作成したり、複数のラベルを作成したり、別のフォント(おそらく特定の行の高さのために編集されたもの、Phillipeの回答を参照)を使用したりすることができます。

長い回答です。 印刷物やオンラインの世界では、テキストの行間のスペースは、quot;leading" (「見出し」と韻を踏んでおり、数十年前に使用された鉛の金属に由来します) として知られています。リーディングは、読み取り専用の UIFont の読み取り専用プロパティで、4.0で非推奨となり、代わりに lineHeight . 私の知る限り、次のような特定のパラメータのセットでフォントを作成する方法はありません。 lineHeight システム フォントと追加したカスタム フォントを取得できますが、一度インストールすると、それらを微調整することはできません。

には spacing パラメータはありません。 UILabel にもありません。

には特に不満はないのですが UILabel の動作には特に満足していないので、独自のサブクラスを作成するか、サードパーティのライブラリを使用することをお勧めします。これは、フォントの選択から動作を独立させ、最も再利用可能なソリューションとなります。

私はそこに でした。 にもっと柔軟性があればと思います。 UILabel であり、それが間違いであることが証明されれば幸いです。