4

フレームを設定してレイヤーを移動したいのですが、レイヤークリップも移動しません。

次のように作成されるレイヤーを作成しました。

layer = [CustomLayer layer];
layer.frame = CGRectMake(50, 50, 100, 30);
[layer setNeedsDisplay];
[self.view.layer addSublayer:layer];

そして、次のようなクリップレイヤー:

clipLayer = [CAShapeLayer layer];
UIBezierPath *clipPath = [UIBezierPath bezierPathWithRoundedRect:layer.bounds
                                                    cornerRadius:10.0f];
clipLayer.path = clipPath.CGPath;
layer.mask = clipLayer;

ただし、コードの後半で、レイヤー フレームを設定すると、次のようになります。

layer.frame = CGRectOffset(layer.frame, -20.0, 0.0);

レイヤーとそのクリップ マスクの両方がオフセットされます。私が達成しようとしている効果は、丸みを帯びた長方形のクリッピング領域の下にあるレイヤーを「スクロール」することです。何か案は?

4

1 に答える 1

4

クリップ レイヤーを 3 番目のレイヤーにクリップします。この 3 番目のレイヤーは次のことを行う必要があります。

  • マスクしたいレイヤーと同じサイズにする
  • マスクしたいレイヤーと同じ位置にある
  • clearColor の背景色を持つ

次に、下のレイヤーを移動するだけで、クリップされたレイヤーを含む3番目のレイヤーはそのままになります。

注:これはうまくいきましたが、移動するレイヤーがクリッピングレイヤーのサブビューであることも確認する必要があります。

于 2013-03-13T22:58:14.460 に答える