4

iOS のループで単線のベジエ曲線をアニメーション化しようとしています。私の頭の中にあるアイデアは、Siri が登場する前の iPhone 4 の Voice Control 画面に似ています。曲線は何にも反応する必要はありません。オーディオ、マイクなど。画面左から画面右にループし、カーブの振幅を変更するだけです。

私はいくつかのテストを試しましたが、これが最も近いものです: IOS : 線からベジェ曲線への変換をアニメーション化する

実際の曲線をアニメーション化して、上下だけでなく、動いているように見せる方法を知る必要があります。

誰かがこれに光を当てているなら、それは素晴らしいことです!

ありがとう!

4

1 に答える 1

7

うわー、私は今日まったく同じことをしました。:) これをチェックして :

したがって、波を描くビューは次のように初期化されます。

_self_view = [[TDTWaveView alloc] initWithFrame:CGRectMake(-320, 174, 640, 200)];

次に、viewDidLoad で 1 回呼び出します[self animateWave];

- (void)animateWave {
[UIView animateWithDuration:.5 delay:0.0 options:UIViewAnimationOptionRepeat|UIViewAnimationOptionCurveLinear animations:^{
    _self_view.transform = CGAffineTransformMakeTranslation(+_self_view.frame.size.width/2, 0);
} completion:^(BOOL finished) {
    _self_view.transform = CGAffineTransformMakeTranslation(0, 0);
    }];
}

これにより、波に必要な直線運動のようなものを与えることができます。

wave のコードに関する限り、drawrect を共有します。

self.yc = 30//The height of a crest.
float w = 0;//starting x value.
float y = rect.size.height;
float width = rect.size.width;
int cycles = 7;//number of waves
self.x = width/cycles;
CGContextRef context = UIGraphicsGetCurrentContext();
CGMutablePathRef path = CGPathCreateMutable();
CGContextSetLineWidth(context, .5);
while (w <= width) {
    CGPathMoveToPoint(path, NULL, w,y/2);
    CGPathAddQuadCurveToPoint(path, NULL, w+self.x/4, y/2 - self.yc, w+self.x/2, y/2);
    CGPathAddQuadCurveToPoint(path, NULL, w+3*self.x/4, y/2 + self.yc, w+self.x, y/2);
    w+=self.x;
}
CGContextAddPath(context, path);
CGContextDrawPath(context, kCGPathStroke);
于 2013-07-08T20:20:09.240 に答える