こんにちは
swiftで下記のようなER図(ERD)を作ろうと考えています。
下図のERDは青ペンで囲った直線の部分が長いです。
そのため、赤ペンで囲ったカーブの部分は短いです。
これを作りたいです。
UIBeizerpathを使ってテストしました。
初めはSinカーブを下記のコードで作って見ました。
すると下図のようになりました。
swift
1//Sinカーブコード 2 3import UIKit 4 5class TestDraw: UIView { 6 let graphWidth: CGFloat = 1.0 7 let amplitude: CGFloat = 0.2 8 9 override func draw(_ rect: CGRect) { 10 let width = rect.width 11 let height = rect.height 12 13 let origin = CGPoint(x: width * (1 - graphWidth) / 2, y: height * 0.50) 14 15 let path = UIBezierPath() 16 path.move(to: origin) 17 18 for angle in stride(from: 5.0, through: 360.0, by: 5.0) { 19 let x = origin.x + CGFloat(angle/360.0) * width * graphWidth 20 let y = origin.y - CGFloat(sin(angle/180.0 * Double.pi)) * height * amplitude 21 path.addLine(to: CGPoint(x: x, y: y)) 22 } 23 24 UIColor.lightGray.setStroke() 25 path.lineWidth = 2.0 26 path.stroke() 27 } 28} 29 30
ん〜これだとどこの辺も必ず曲線を描いているので、少し違います。
また、カーブ部もとても大きいです。
そこで、第2の方法を考えました。
それは、カーブ部と直線部を分けて生成し、それぞれが繋がるように位置を調整する方法です。
カーブ部が2つ、直線部を1つ生成することになります。
この方法以外に解決方法はありませんでしょうか?
まだSwiftは経験が浅いので、もしかしたらもっと便利な関数があったりしないかな〜と思って質問しました。
「こんな考え方はどうだろー」などでも構いません!
何卒お願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/22 14:20