私は iOS 開発の初心者です。ストップウォッチの開始ボタンを押すと、カウンター トークン効果のようなタイマーを表示したいです。参照用に画像を添付しました。秒と分を表示するようにしましたが、自動スクロール効果をアニメートする方法がわかりません。 ? これどうやってするの?
カウンターが動いているとき、ある数字から別の数字にジャンプするのではなく、ガソリン ポンプ メーターのように、ある数字から次の数字にスムーズに移動する必要があります。ありがとう
scrollToRowAtIndexPath
このアニメーションは独自のタイマー間隔を使用しており、その時間間隔を変更するのが非常に難しい、または不可能と言えるため、代わりに tableView を手動でスクロールする必要があり ます。
そこで、このような問題を解決する API を実装し、スムーズにスクロールできるデモ アプリを作成しました。
tableRow の高さが 30 であるため、1 秒ごとに起動する外部タイマーと 0.03 秒ごとに起動する内部タイマーを使用する必要があります。内部タイマーの間隔を次のように計算しました:---
1 秒間 30 ピクセル移動し、内部タイマー内で 0.33 秒間 1 ピクセル移動します。
内部タイマーは無効化され、外部タイマー内で初期化されるため、1 秒ごとに起動します。
そして、内部タイマーがセルの移動を行います。
dial4 は tableView です
私のコードを見てください。
#define rowHeight 30
-(void)startCounter
{
outertimer=[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(snapCell) userInfo:nil repeats:YES];
}
-(void)stopCounter
{
[outertimer invalidate];
}
-(void)snapCell
{
NSLog(@"Initialize Internal timer %i",secLsb);
secLsb++;
if (secLsb==10) {
[dial4 setContentOffset:CGPointMake(0, 0) animated:NO];
secLsb=0;
NSLog(@"dial content offset y is %f",dial4.contentOffset.y);
}
[internaltimer invalidate];
internaltimer=[NSTimer scheduledTimerWithTimeInterval:0.03
target:self
selector:@selector(automaticScroll)
userInfo:nil
repeats:YES];
}
-(void)automaticScroll
{
NSLog(@"val is & y ======== %f",dial4.contentOffset.y);
[dial4 setContentOffset:CGPointMake(dial4.contentOffset.x,dial4.contentOffset.y+1) animated:NO];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return rowHeight;
}
タイムカウンターを見てみよう
画像から、カウントダウン タイマーのような効果を得ようとしていると推測できます。ここでカウントダウンタイマーを見てください。それは何らかの形であなたを助けるかもしれません。
プログラミングを楽しもう!!
出力については、両方のリンクを参照してください。それはあなたを助けます
UIPickerView は UIDatePicker のように見えますが、秒単位で表示されます
と
選択した値の後に UIPickerView にラベルを表示するにはどうすればよいですか?
ありがとう。