2

UIView に木製のテクスチャの境界線を追加する必要があります。これを行うために、次の解決策を考えました。

  • 私は元のUIViewを持っています(uiViewAと言います)
  • 最初のUIViewと同じサイズの別のUIView(uiViewBなど)を作成します
  • 幅 8px のベジエ パスを作成します
  • パスを作成したら、これを uiViewB に適用します
  • uiViewA のサブビューに uiViewB を追加します

ベジエ パスを適用するコードは次のとおりです。

UIView* uiViewB = [[UIView alloc] initWithFrame:uiViewA.bounds];
UIImage* wood = [UIImage imageNamed:@"texture_wood"];
[uiViewB setBackgroundColor:[UIColor colorWithPatternImage:wood]];

// creation of the bezier path
UIBezierPath* borderPath = ... ;
[borderPath setLineWidth:8.0];
[borderPath moveToPoint:CGPointMake(0.0, 0.0)];
borderPath addLineToPoint:...
borderPath addArcWithCenter:...
borderPath addLineToPoint:...
borderPath addArcWithCenter:...
borderPath addLineToPoint:...

CAShapeLayer* borderMaskLayer = [CAShapeLayer layer];
[borderMaskLayer setFrame:uiViewA.bounds];
borderMaskLayer.path = [borderPath CGPath];
uiViewB.layer.mask = borderMaskLayer;
[uiViewB.layer setMasksToBounds:YES];

次の結果を得たいと思います。

ここに画像の説明を入力

しかし、私が得た結果は次のとおりです。

ここに画像の説明を入力

ベジェ パスが正しい方法で適用されていないように見える理由について何か考えはありますか?

4

1 に答える 1

2

そこにあるコードから、マスクとして使用されるシェイプレイヤーのデフォルトの塗りと線を使用しているように見えるため、パスが塗りつぶされ、表示されている結果が得られます。

やりたいことは、クリアな塗りつぶしの色を設定し、ランダムな不透明な線の色を設定することです。次に、適切な線幅、線キャップ、線の丸みなどを設定して、ストロークの外観を構成する必要があります。

于 2013-10-03T09:17:37.220 に答える