形状が正しく入力されていますが、塗りつぶしの色を変更する方法や、塗りつぶしの色の変更をアニメーション化する方法を把握することができません。UIBezierPath
。ちょうどUIViewの背景色を変更するのが私が探しているものです。UIBezierPathで塗りつぶしの色の変更をアニメーション化する方法は?
var fillColor = UIColor()
func changeBackgroundColor() {
let animcolor = CABasicAnimation(keyPath: "fillColor")
animcolor.fromValue = UIColor.greenColor()
animcolor.toValue = UIColor.orangeColor()
animcolor.duration = 1.0;
animcolor.repeatCount = 0;
animcolor.autoreverses = true
shapeLayer.addAnimation(animcolor, forKey: "fillColor")
}
var fillColor = UIColor()
let clipPath = UIBezierPath()
let shapeLayer = CAShapeLayer()
override func drawRect(rect: CGRect) {
clipPath.moveToPoint(CGPointMake(self.bounds.minX + 7.65, self.bounds.minY - 0.25))
clipPath.addCurveToPoint(CGPointMake(self.bounds.minX + 7.65, self.bounds.minY + 36.1), controlPoint1: CGPointMake(self.bounds.minX - 2.38, self.bounds.minY + 9.79), controlPoint2: CGPointMake(self.bounds.minX - 2.38, self.bounds.minY + 26.06))
clipPath.addCurveToPoint(CGPointMake(self.bounds.minX + 43.99, self.bounds.minY + 36.1), controlPoint1: CGPointMake(self.bounds.minX + 17.69, self.bounds.minY + 46.13), controlPoint2: CGPointMake(self.bounds.minX + 33.96, self.bounds.minY + 46.13))
clipPath.addLineToPoint(CGPointMake(self.bounds.minX + 43.99, self.bounds.minY + 36.1))
clipPath.addLineToPoint(CGPointMake(self.bounds.minX + 44.01, self.bounds.minY + 0.19))
clipPath.addLineToPoint(CGPointMake(self.bounds.minX + 7.58, self.bounds.minY + 0.19))
clipPath.usesEvenOddFillRule = true
fillColor = userColor
}
clipPath.addClip()
fillColor.setFill()
clipPath.fill()
shapeLayer.path = clipPath.CGPath
self.layer.mask = shapeLayer
でコードを確認することができます。より良い実装に取り組んでいただきありがとうございます。しかし、 'fillLayer'の塗りつぶしの色をアニメーション化することはできません。私はそれを変更することさえできません。この関数は間違いなく呼び出されています。これは私が座って、30-40分でそれを突き抜けて終わると思うようなものです。 –
@spacemonkeyアニメーション化する前に 'fillLayer'が画面に表示されていますか? 'frame'がゼロでないことを確認し、レイヤー階層に追加します。上記のコードを使用している場合は、 'init(frame:)'イニシャライザで 'UIView'を初期化する必要があります(実際には、サイズ関連のコードを'例えば、「レイアウトサブビュー」)。 – Hamish
ありがとうございます。正確にどこで、そしてサイズであるべきか。塗りつぶしの色は、同じものでなければならないものに設定されています。他のものに変更されることはありません。 –