https://www.jianshu.com/p/2316f0d9db65
1.ベジェ曲線
ソフトウェア:PaintCode:直接描画、画像生成ソフトウェアベジェ曲線
関連概念:UIBezierPathとCGPathに
方法1: - (ボイド)moveToPoint:(するCGPoint)点; //ベジェ曲線の開始点を設定し、CGPathにメソッドを対応する:CG_EXTERNボイドCGPathMoveToPoint(CGMutablePathRef __nullable経路、CONST CGAffineTransform * __nullable M、CGFloatのX、CGFloatのY)
方法2: - (ボイド)addLineToPoint:(するCGPoint)点; //線形ベジェ曲線の終了点、CGPathにメソッドを対応する:CG_EXTERNボイドCGPathAddLineToPoint(CGMutablePathRef __nullable経路、CONST CGAffineTransform * __nullable M、CGFloatのX、CGFloatのY)
関数:B(T)=(1-T)* P0の+のT *のP1(0≤T≤1)
方法3: - (ボイド)addQuadCurveToPoint:(するCGPoint)エンドポイント制御点:(するCGPoint)制御点; // 2元ベジエ曲線、及びmoveToPoint:(するCGPoint)点、一緒に使用される、ポイント(P0点)開始点としては、エンドポイント(P2点)の中点は、制御点(P1点)制御点としては、CGPathにメソッドを対応する:CG_EXTERNボイドCGPathAddQuadCurveToPoint(CGMutablePathRef __nullable経路、CONST CGAffineTransform * __ null許容M、CGFloat CPX、CGFloat CPY、CGFloatのX、CGFloatのY)
関数:B(T)=(1-T)*(1-T)* P0 +の2T *(1-T)* P1 + 1のT *のT *のP2(0≤T≤1)
方法4: - (ボイド)addCurveToPoint:(するCGPoint)エンドポイントcontrolPoint1:(するCGPoint)controlPoint1 controlPoint2:(するCGPoint)controlPoint2; // 3元ベジエ曲線、及びmoveToPoint:(するCGPoint)点、一緒に使用される、ポイント(P0点)出発点として、エンドポイント、エンドポイント(P3点)は、controlPoint1(P1点)とcontrolPoint2(P2点)制御点としては、CGPathにメソッドを対応する:CG_EXTERNボイドCGPathAddCurveToPoint(CGMutablePathRef __nullableパスを、CONST CGAffineTransform * __nullable M、CGFloat cp1x、CGFloat cp1y 、CGFloat cp2x、CGFloatのcp2y、CGFloatのX、CGFloatのY)
函数:B(T)=(1-T)*(1-T)*(1-T)* P0 +の3T *(1-t)は(1-T)P1 +の3T * T×(1-T) P2 +のT *のT * T *のをP3(0≤T≤1)
方法5: - (ボイド)addArcWithCenter:(するCGPoint)中心半径(CGFloat)半径startAngleの:(CGFloat)startAngleのendAngle:(CGFloat)endAngle時計回り:(BOOL)時計回り; //点弧を有する円を描きます、中心:中心半径:半径startAngleの:開始角度時計回り:終了角度時計方向:右回りか;
2.ベジェ曲線アニメーション+
手順:1.ベジェ曲線を作成します。
2層を作成CAShapeLayerを作成し、層は、経路に配置されたベジェ曲線経路属性、及び層のいくつかのプロパティを設定します
3.アニメーションCABasicAnimationを作成し、作成した層CAShapeLayerに追加
前記CABasicAnimation * checkAnimation = [CABasicAnimation animationWithKeyPath:「strokeEnd」@];キーパス:strokeStartとstrokeEndによってアニメーションの開始と終了点を決定するステップと、CABasicAnimationで、場合、fromValueとtoValueの領域範囲決定始点と終点がアニメーションであります
3.レイヤーマスクプロパティアプリケーション
ページ相互作用: - (ボイド)animateTransition:(ID)transitionContext、プロキシ方式で実行されます。
1.获取fromVC:のViewController * fromVC =(のViewController *)[transitionContext viewControllerForKey:UITransitionContextFromViewControllerKe
2.获取toVC:SecondViewController * toVC =(SecondViewController *)[transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]。
3.添加到containerView:のUIView * contView = [transitionContext containerView]。
[contView addSubview:toVC.view]。
4.マスクをtoVC CAShapeLayerがされて設定し、アニメーションパスとCAShapeLayerの属性を追加します。
5.アニメーションの終了時に、マスク値が除去された - (ボイド)animationDidStop:(CAAnimation *)アニメーションが終了:(BOOL)フラグ{[self.transitionContext viewControllerForKey:UITransitionContextToViewControllerKey] .view.layer.mask =ニル;}