1

テキスト (数字の「1」) をビューの中央に表示しようとしていますが、この画像CATextLayerに示すようにテキストが非常に小さく、中央に表示されません。表示されている赤い円は、アニメーション化されたオブジェクト自体であるため、テキストをサブレイヤーとして追加したくありません。代わりに、表示するサブレイヤーとして追加しました。私が CATextLayer 用に書いたコードは次のとおりです。CALayer

CATextLayer *numbers = [CATextLayer layer];

numbers.string = @"1";
numbers.font = [UIFont fontWithName:@"Arial" size:100.0];
numbers.foregroundColor = [UIColor blackColor].CGColor;
numbers.bounds = CGRectMake(0, 0, 200, 200);
numbers.position = self.view.center;
numbers.wrapped = NO;

[self.view.layer addSublayer:numbers];

私の質問が明確であることを願っています。どこが間違っているのか教えてください。どうもありがとう。

4

1 に答える 1

1

編集

このfontプロパティは、UIFont ではなく CGFontRef を取ります。を使用して作成できますCGFontCreateWithFontName( (CFStringRef)@"ArialMT" )。フォント サイズはfontSizeプロパティを使用して設定されます。

元の答え

正しいフォント名は"ArialMT"1です。存在しないフォント名を使用しているため、テキストはデフォルトのフォントとサイズになります。

レイヤーは実際には中央にあり、200 x 200 ポイント2です。問題は、テキストがテキストレイヤー内の中央に配置されておらず、代わりにテキストが左上隅にあることです。フォントを大きくすると、ほぼ中央にあるように見えるかもしれませんが、それでもそうではありません.

テキストレイヤーのフレーム内の中央にテキストを表示したい場合contentsGravityは、レイヤーの を次のように変更することにより、レイヤーのコンテンツ(この場合はテキスト)がレイヤーの境界に対してどのように描画されるかを変更できますkCAGravityCenter


  1. iOS フォントは、特定のフォントを取得するために使用する名前の優れたリソースです。
  2. これは、テキストレイヤーにクリアブルーのような強い背景色を与えることで簡単に確認できます(円が赤であるため)
于 2012-07-23T20:16:41.377 に答える