2016-06-20 13 views
1

すばやく複数の図形(四角形、三角形、円など)を描画しようとしていますが、私はuibezierpathを使用していますが、まさに私が欲しいものです。 たとえば、矩形を描画する必要がありますが、この矩形の境界線の線幅が違う必要があります。 これを行うには、私は別のパスを作成し、 "appendpath"を使用してそれらを1つのパスにマージします。だから、私はまた、この長方形に背景画像を持つ必要があります。 そのために、レイヤーを作成してイメージを設定します。問題は、「appendpath」を使用すると背景画像が表示されないことです。なぜなら、図面を長方形として認識しないからです。複数の線幅と背景画像を持つuibezierpath(スウィフト)

私はそれが十分にはっきりしていることを望んでいますが、背景画像で図形を描き、境界の幅が違うのでしょうか?

ありがとうございます!

が通常CALayerを作成し、そのcontentsとして画像を設定し

1)マスキング:

答えて

1

は、私はあなたが試すことをお勧めしたい2つの解決策があります。次に、好きなパスを使ってCAShapeLayerを作成し、最初のレイヤーのmaskとして使用します。

例えば:

let imageLayer = CALayer() 
imageLayer.contents = UIImage(named: "yourImage")?.CGImage // Your image here 
imageLayer.frame = ... // Define a frame 

let maskPath = UIBezierPath(...) // Create your path here 
let maskLayer = CAShapeLayer() 
maskLayer.path = maskPath.CGPath 

imageLayer.mask = maskLayer 

は、右のフレームとパスを設定することを忘れないでください、とあなたが望んでいた効果を実現することができるはずです。

2)そのfillColorとしてあなたのイメージを使用し、色

あなたが好きなパスを持つCAShapeLayerを作成して記入してください。

例えば:

let path = UIBezierPath(...) // Create your path here 
let layer = CAShapeLayer() 
layer.path = path.CGPath 

let image = UIImage(named: "yourImage") // Your image here 
layer.fillColor = UIColor(patternImage: image!).CGColor 

あなたは最初に簡単にこのアプローチを見つけたが、画像があなたの形状は全く簡単ではありません埋める方法を制御することがあります。

こちらがお役に立てば幸いです。
詳細をお知りになりたい場合は、達成しようとしているイメージやスケッチ、および/またはこれまでに作成したコードをご提供ください。ありがとう!

+0

ありがとうございました。私は今日これを試してみますが、あなたの投稿を読んだとき、私はそれが私がやろうとしているものとうまくいくと確信しています。 :) – Adz

+1

最後に手伝ったのですか?もしそうなら、答えを受け入れてください。さもなければ私に知らせてください。ありがとう! – Para

関連する問題