0

CATextLayer でテキストの変化をアニメーション化しようとしています。

   intValueLayer = [CATextLayer layer];
   [intValueLayer setFrame:self.lblIntPart.bounds];
   [[self.lblIntPart layer] addSublayer:intValueLayer];

ビューで AutoLayout を使用していますが、setFrame メソッドが正しく機能していないことがわかっています。私の場合、CATextLayer のフレームは self.lblIntPart よりも小さいため、TextLayer に制約を追加したり、self.llbIntPart と同じフレームで表示したりするにはどうすればよいですか。

ありがとうございました!

すべてのメソッドは次のようになります。

   intValueLayer = [CATextLayer layer];
    [intValueLayer setFrame:self.lblIntPart.bounds];
    [[self.lblIntPart layer] addSublayer:intValueLayer];

    [intValueLayer setAlignmentMode:@"center"];
    [intValueLayer setForegroundColor:self.category.colour.colour.CGColor];
    [intValueLayer setFont:CFBridgingRetain(@"DilleniaUPCBold")];
    [intValueLayer setFontSize:96.0f * scale];
    intValueLayer.contentsScale = [UIScreen mainScreen].scale;

    [intValueLayer setString:@"0"];
4

1 に答える 1

0

あなたの問題を再現しようとした後、これが私が理解していることです。

ラベル フレームが大きく、デフォルトの CATextLayer フォント プロパティがフレームに完全に収まらない可能性があります。

CATextLayer のプロパティを調整してみてください。

[intValueLayer setFont:(__bridge CFTypeRef)([UIFont systemFontOfSize:17])];
[intValueLayer setFontSize:17];

ラベルをそのまま使用した場合のプロパティと一致するようにします。

于 2013-10-29T14:57:19.453 に答える