11

高さが固有のコンテンツ サイズに基づいて、行が増えると高くなるように、自動レイアウトで UILabel を設定しました。同じビュー内の他の要素と一緒に中央に配置する必要があります。すべてがデフォルトで、問題なく動作します。

ただし、少しスペースが多すぎるカスタム フォントを使用しています。次のように、NSMutableParagraphStyle を設定しました。

NSMutableParagraphStyle *headlineParagraphStyle = [NSMutableParagraphStyle new];
headlineParagraphStyle.lineSpacing = 0.0f;
headlineParagraphStyle.maximumLineHeight = 20.0f;
headlineParagraphStyle.hyphenationFactor = 0.0f;
headlineParagraphStyle.alignment = NSTextAlignmentLeft;

次に、UILabel として NSAttributedString を作成して設定します-attributedText

NSString *uppercaseHeadline = self.currentStory.headline.uppercaseString;
NSAttributedString *attributedHeadline = [[NSAttributedString alloc] initWithString:uppercaseHeadline attributes:@{NSParagraphStyleAttributeName: headlineParagraphStyle}];
self.headlineLabel.attributedText = attributedHeadline;

その結果、テキストは問題ないように見えますが、ラベルの下部にはまだ余分なスペースがありますが、UILabel の上部に押し込まれ、上部が切り取られています。UILabel クリッピング

これにより、このラベルのテキストに対する他の項目の中央揃えも外れます。これは、2 つの行の間のスペースがラベルのフレームの中央と一致していないことがわかるからです。

上部がクリップせず、下部にスペースがないように、UILabel にこのテキストを再センタリングするように指示するにはどうすればよいですか?

4

5 に答える 5

3

iOS 7 がリリースされ、そのプラットフォームの NDA が解除された後、私は戻ってこず、この質問に答えていないことに気付きました。iOS SDK 7.0 の時点で、NSAttributedString 属性を使用することが可能になりましたNSBaselineOffsetAttributeName。これはまさに私が必要としていたことを行いました。

利用可能でしたが、iOS 6 では「サポートされなくなりました」。ただし、iOS 7 SDK でビルドすると、正しい動作をするように見えました。

編集:不明な場合は、これを行うことはお勧めしません。Apple がサポートを終了したと言った場合、それを信頼するのはおそらく得策ではありません。それは私にとってはうまくいきましたが、それは間違いなく長期的な解決策ではありません.

于 2014-05-04T05:38:35.660 に答える
2

「奇妙なインタビュー」へのリンクが重要だと思います: http://i.imgur.com/pFeqPHd.gif .

フォントのアセンダー プロパティを編集する必要がある場合があります。こちらを参照してください: UIButton カスタム フォントの垂直方向の配置

于 2013-09-09T02:23:26.830 に答える