3

テキストビットをさまざまなサイズとフォントで水平方向に揃えようとしています。

これが私が望む結果です(scribusで作成):

モックアップ

テキストが水平方向に完全に (ピクセル単位で) 整列されていることがわかります。

これを基本的な UITextView で実装し、テキストを正当化しようとしました。これが私が得たものです:

正当化された

テキストがピクセルに対して水平方向に配置されていないことがわかります。センタリングを試みましたが、まだ十分ではありません:

中央揃え

1 行目と 3 行目は動的テキストなので、サイズが変化します。

私はテキストキットを見ましたが、決定的なものは何も見つかりませんでした...

私のリードは次のとおりです。

  1. 指定された幅のテキストに最適なフォント サイズを見つけます。
  2. テキスト境界ボックスが目的の幅と等しくなるように、グリフを均等に配置します。

しかし、私はそれを行う方法がわかりません。リードはありますか?ありがとう !

4

1 に答える 1

0

NSString を試しましたboundingRectWithSize:options:attributes:context:か?

CGRect rect = [string boundingRectWithSize:CGSizeMake(width, height) 
                                   options:NSStringDrawingUsesFontLeading 
                                attributes:attributes
                                   context:nil];

iOS 6 もサポートしている場合は、-[NSString sizeWithFont:constrainedToSize:lineBreakMode:]

CGSize textSize = [string sizeWithFont:uifont
                     constrainedToSize:maximumCGSize
                         lineBreakMode:lineBreakMode];

このsizeWithFont:constrainedToSize:lineBreakMode:メソッドは、iOS 7 で非推奨になりました。

これらの方法のいずれかを使用して、最も幅の広い線を見つけ、他の線と一致させることができます。動的テキストの場合、テキストが正しく正当化されるように UITextView を使用しないことをお勧めします。

于 2013-10-30T01:59:35.307 に答える