-1

iPhoneアプリの面白いアニメーション効果に気づきました。ユーザーがアプリケーションをアクティブにするか、[今日] ボタンをタッチすると、現在の日付のセルが点滅/点滅します。

同じ効果を実装する方法は?画像リソースなしで実装することは可能ですか (たとえば、CoreGraphics のみを使用します)?

ありがとう

4

3 に答える 3

1

継続的な点滅効果のためにタイマーを使用する

  mytimer = [NSTimer scheduledTimerWithTimeInterval:0.06f
                                             target:self
                                           selector:
             @selector(willStartBlinkingAnimation)
                                           userInfo:nil
                                            repeats:YES];

日付ラベルを表示/非表示にする関数を1つ記述します。または、ここでアルファを設定できます。偶数の場合は0.5fに設定し、奇数の場合は1.0fに設定します。

- (void) willStartBlinkingAnimation {

  [UIView animateWithDuration:1.f
                   animations:^{

                     [currentDateLabel setHidden:![currentDateLabel isHidden]];
  }];
}

このプロセスを停止する場合、またはviewDidUnloadメソッドで、プロセスを停止してタイマーを解放します。

[mytimer invalidate];
mytimer = nil;

これがあなたの要件を満たすのに役立つことを願っています。

于 2013-03-18T15:24:31.947 に答える
1

UIAnimationラベルのアルファ プロパティを使用してアニメーション化します。

于 2013-03-18T15:02:17.000 に答える
0

私はあなたが暦日を通して「輝く」その効果を意味すると思います(今日を押すことによって)。

1)グラデーションを作成します。

オプションA:この効果を実現するには、テーブル行の適切な高さで透明なpngを作成する必要があります。サンプルimgは次のようになります(これは説明用であり、plsは1つ作成します): ここに画像の説明を入力してください

オプションB:CAGradientLayerを使用してグラデーションを作成します。それでも、セルの行のグラデーションを効果的にアニメーション化するには、UIImageViewを使用する必要があります。プログラムでグラデーションビジュアルを操作したくない場合は、オプションAをお勧めします。

2)画像を行に配置します。

オプションA:このアニメーションが常に一番上の行で行われることが確実な場合は、テーブルの上にグラデーション画像を追加できます。

オプションB:(前述のアプリケーションが使用する可能性があるもの)グラデーション画像をセル内に配置する必要があります。おそらく最良の選択は、セルの左側にグラデーション画像を配置するカスタムセルを使用することです(前述のアプリが使用しているように、ボックスの左側の日付を参照してください)(X coord = -gradient_img.widthを配置)。

3)グラデーションのアニメーション化。

リンクしたいアクションでアニメーションシーケンスを開始します。例えば。アプリはテーブルビューのscrollViewDidEndScrollingAnimationデリゲートメソッドを使用してアニメーションをトリガーすると思います。

[UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionCurveLinear 
                 animations:^{                       
                     viewShiningImage.frame = CGRectMake(320, 0, viewShiningImage.frame.size.width, viewShiningImage.frame.size.height);
                 } 
                 completion:^(BOOL finished) {
                     viewShiningImage.frame = CGRectMake(-viewShiningImage.frame.size.width, 0, viewShiningImage.frame.size.width, viewShiningImage.frame.size.height);
                 }
 ];
于 2013-03-18T15:48:38.907 に答える