私は無限大のシンボルを描きたいと思います。そのパスには、すべてのパスをカバーする塗りつぶし円を動かさなければなりません。 それはカスタマイズ可能でなければなりません。ある値の場合は左側にしておかなければなりませんし、ある値の場合は別の側に行くべきです。 Is this possible first of all ?
Infinityを描画して円上をどのように動かすか?
今私が円を描くことができていると私はこれを使用して、そのパスに円を移動することができる午前:
let circlePath = UIBezierPath(arcCenter: CGPoint(x:self.view.frame.midX, y:self.view.frame.midY), radius: self.view.frame.size.width/3, startAngle: 0, endAngle:CGFloat(Double.pi)*2, clockwise: true)
circlePathSize = circlePath.bounds.size
// circleLayer is only used to locate the circle animation path
circleLayer.path = circlePath.cgPath
circleLayer.strokeColor = UIColor.white.cgColor
circleLayer.shadowColor = UIColor.darkGray.cgColor
circleLayer.shadowOpacity = 7.0
circleLayer.shadowRadius = 2.0
circleLayer.shadowOffset = CGSize(width: -1, height: 0)
circleLayer.lineWidth = 3.0
circleLayer.fillColor = UIColor.clear.cgColor
self.view.layer.addSublayer(circleLayer)
let animation = CAKeyframeAnimation(keyPath: "position");
animation.duration = 5.0
animation.repeatCount = MAXFLOAT
animation.path = circlePath.cgPath
//whatever the value of origin for squareView will not affect the animation
squareView.frame = CGRect(x: 0, y: 0, width: 20, height: 20)
squareView.layer.cornerRadius = 10
squareView.layer.shadowColor = UIColor.darkGray.cgColor
squareView.layer.shadowOpacity = 7.0
squareView.layer.shadowRadius = 3.0
squareView.layer.shadowOffset = CGSize(width: 2, height: 0)
squareView.backgroundColor = UIColor.white
self.view.addSubview(squareView)
// You can also pass any unique string value for key
squareView.layer.add(animation, forKey: nil)
そして、私はこれを使用してもサインカーブを描くことができています:
let origin = CGPoint(x: width * (1 - graphWidth)/2, y: height * 0.50)
let path = UIBezierPath()
path.move(to: origin)
for angle in stride(from: 5.0, through: 360.0, by: 5.0) {
let x = origin.x + CGFloat(angle/360.0) * width * graphWidth
let y = origin.y - CGFloat(sin(angle/180.0 * Double.pi)) * height * amplitude
path.addLine(to: CGPoint(x: x, y: y))
}
UIColor.white.setStroke()
path.stroke()
しかし私はそれらを混ぜ合わせて私が望むものを得ることはできません。どんな助けもありがとう。ありがとう。
framekeyanimationに与えられたパスが円であるのはなぜ、あなたがすでに作成したサインカーブパスの代わりに? –
私は知っているが、無限のシンボルではない。まず無限大のシンボルを描きたい。どのように?@ PuneetSharma –