【Swift】UIBezierPathで点線が描けるsetLineDashで遊んでみた

作成日
更新日

UIBezierPathで点線を引くことができるsetLineDashで遊んでみました。

まずはどのようにコードを書くかですが

// var bezierPath = UIBezierPathを用意しておく
let dashes:[CGFloat] = [50,20]
bezierPath.setLineDash(dashes, count: dashes.count, phase: 0)

これだけでOKです

線を描くところはこちらで(→【Swift】簡易ペイントを作成してみた。)

 

まず適当にCGFloatの配列を用意します。この中身をいじることで簡単に色々な点線を書けます。

countには配列の個数を入れてください。(配列より大きい数や小さい数でもエラーはでませんが、配列より大きいと画面がチカチカして、小さい数だと配列のその数までを繰り返します。)

phaseは点線の開始位置ですが、変えても変化がよくわからないです。。。

 

なのでとりあえず配列の中をいじってみました。

 

dashes = [50,20]のとき

2016-01-【Swift】UIBezierPathで点線が描けるsetLineDashで遊んでみた-083c9e9a418046728548c4979d2e794a

まずは基本的なやつ。

線50 空白20を繰り返します。

 

dashes = [50,20,30,10]のとき

2016-01-【Swift】UIBezierPathで点線が描けるsetLineDashで遊んでみた-14a8c918008e4ea08899db0a8ba4c468

 

線50 空白20 線30 空白10を繰り返します

 

dashes = [50,20,30]のとき

次に奇数の時です

2016-01-【Swift】UIBezierPathで点線が描けるsetLineDashで遊んでみた-0486eae746e540409e44d0ccd4aad296

 

線50  空白20 線30 (空白50 線20 空白30) を繰り返していきます

 

奇数の時は線と空白が反対になるというところがポイント。

 

lineCapStyleもあわせて変えるとまた違った印象に

 

bezierPath.lineCapStyle = .Round

 

2016-01-【Swift】UIBezierPathで点線が描けるsetLineDashで遊んでみた-e900517c46f44bac941932c0289b6da4

 

ドットで書くにはlineCapStyleを.Roundにしてから

dashesを[0,10]とかにしましょう。線の部分を0にしてください。

2016-01-【Swift】UIBezierPathで点線が描けるsetLineDashで遊んでみた-96bfa9e2a577416590076779e7cd5d2b

 

実際のコードでは線の太さにあわせて間隔を決めなければ点線にならないので注意です。

var strokeWidth = 5.0 //可変
bezierPath.lineCapStyle = .Round
let dashes:[CGFloat] = [strokeWidth * 0,strokeWidth * 2]
bezierPath.setLineDash(dashes, count: dashes.count, phase: 0)

 

 

お絵描き画面が一応完成したのでひと段落です。後はサイトとの連携とメモリ管理・・・。とりあえず一息ついてサイトとの連携を明日までにしたいです。頑張ります。

サイトアイコン
公開日
更新日