我有一个包含很少其他子层的 CALayer(实际上是 CATextLayer)
当用户在 ipad 上做通常的手势时,我想在该层上应用一些转换,但它似乎不能正常工作。使用 CALayer 的目的是仅将转换应用于该层,以便我的所有子文本层将同时受到相同转换的影响。
正在发生的事情是转换似乎在先前位置和当前位置之间闪烁。我真的不明白可能是什么问题......例如,当我做一个 2 根手指平移手势时,CaTextLayer 位置在我的手势过程中一直闪烁,最后它们都正确放置在新的翻译位置。
所以一切似乎都很好,除了那个让我很困扰的闪烁的东西。
我需要设置一些我不知道的属性吗?我在想它可能也与边界和框架有关......
这是我创建 CATextLayer 的方法(仅在创建时完成一次,并且可以正常工作):
_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;
这就是我将它们添加到我的 Super CALayer 的方式
[_layerMgr addSublayer:t.attributedTextLayer_];
[[_drawDelegate UI_GetViewController].view.layer addSublayer:_layerMgr];
以下是我如何应用我的转换:
_layerMgr.transform = CATransform3DMakeAffineTransform(_transform);