27

アニメーションのbackgroundColourUIViewを変更できます。そして、UISlideViewあなたはアニメーション化された値を変更することができます。

UIViewアニメーション化できるように、独自のサブクラスにカスタムプロパティを追加できますか?

CGPath内にある場合UIViewは、パスの描画パーセンテージを変更することで、描画をアニメーション化できます。

そのアニメーションをサブクラスにカプセル化できますか?

つまり、私は円を作成するUIViewaを持っています。CGPath

円がない場合は0%を表します。円がいっぱいの場合は100%を表します。パスの描画パーセンテージを変更することで、任意の値を描画できます。CGPathのパーセンテージをアニメーション化し、パスを再描画することで、(UIViewサブクラス内で)変更をアニメーション化することもできます。

変更をブロックUIViewに貼り付けて、パスのパーセンテージの変更をアニメーション化できるように、いくつかのプロパティ(つまりパーセンテージ)を設定できますか?UIView animateWithDuration

私がうまくやりたいことを説明したと思います。

基本的に、私がやりたいのは次のようなものだけです...

[UIView animateWithDuration:1.0
 animations:^{
     myCircleView.percentage = 0.7;
 }
 completion:nil];

円のパスは指定されたパーセンテージにアニメーション化されます。

4

5 に答える 5

26

CALayer を拡張してカスタムを実装する場合

- (void) drawInContext:(CGContextRef) context

needsDisplayForKey次のように (カスタム CALayer クラスで)オーバーライドすることにより、アニメーション化可能なプロパティを作成できます。

+ (BOOL) needsDisplayForKey:(NSString *) key {
    if ([key isEqualToString:@"percentage"]) {
        return YES;
    }
    return [super needsDisplayForKey:key];
}

もちろん、@property呼ばれる必要もありますpercentage。これからは、コア アニメーションを使用してパーセンテージ プロパティをアニメーション化できます。[UIView animateWithDuration...]呼び出しでも動作するかどうかは確認していません。それはうまくいくかもしれません。しかし、これは私にとってはうまくいきました:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"percentage"];
animation.duration = 1.0;
animation.fromValue = [NSNumber numberWithDouble:0];
animation.toValue = [NSNumber numberWithDouble:100];

[myCustomLayer addAnimation:animation forKey:@"animatePercentage"];

ああ、 で使用yourCustomLayerするmyCircleViewには、次のようにします。

[myCircleView.layer addSublayer:myCustomLayer];
于 2013-01-07T09:59:01.743 に答える
0

パーセンテージ部分を自分で実装する必要があります。レイヤー描画コードをオーバーライドして、設定されたパーセンテージ値に従って cgpath を描画できます。コア アニメーション プログラミング ガイドアニメーションの種類とタイミング ガイドを確認してください

于 2013-01-07T09:50:56.833 に答える