他のサブレイヤーがほとんど含まれていないCALayerがあります(実際にはCATextLayer)
ユーザーがiPadで通常のジェスチャーを行うときに、そのレイヤーに変換を適用したいのですが、正しく機能していないようです。CALayerを使用する目的は、そのレイヤーにのみ変換を適用して、すべてのサブテキストレイヤーが同じ変換で同時に影響を受けるようにすることでした。
何が起こっているのかというと、変換は前の位置と現在の位置の間でちらつくように見えます。何が問題になるのかよくわかりません...たとえば、2本の指でパンするジェスチャを実行すると、CaTextLayerの位置がジェスチャ中に常にちらつき、最後にすべてが新しい変換された位置に正しく配置されます。
ですから、私を大いに悩ませているちらつきを除いて、すべてがうまく機能しているようです。
知らないプロパティを設定する必要がありますか?バウンドやフレームにも関係があるのではないかと思います。
CATextLayerを作成する方法は次のとおりです(これは作成時に1回だけ実行され、正しく機能します)。
_textString = [[NSString alloc] initWithString: text];
_position = position;
attributedTextLayer_ = [[CATextLayer alloc] init];
attributedTextLayer_.bounds = frameSize;
//.. Set the font
attributedTextLayer_.string = attrString;
attributedTextLayer_.wrapped = YES;
CFRange fitRange;
CGRect textDisplayRect = CGRectInset(attributedTextLayer_.bounds, 10.f, 10.f);
CGSize recommendedSize = [self suggestSizeAndFitRange:&fitRange
forAttributedString:attrString
usingSize:textDisplayRect.size];
[attributedTextLayer_ setValue:[NSValue valueWithCGSize:recommendedSize] forKeyPath:@"bounds.size"];
attributedTextLayer_.position = _position;
これが私のスーパーCALayerにそれらを追加する方法です
[_layerMgr addSublayer:t.attributedTextLayer_];
[[_drawDelegate UI_GetViewController].view.layer addSublayer:_layerMgr];
そして、これが私の変換を適用する方法です:
_layerMgr.transform = CATransform3DMakeAffineTransform(_transform);