2

コードを使用してiPadアプリケーションに現在の時刻を表示できます。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];  
[dateFormatter setTimeStyle: NSDateFormatterShortStyle];


NSString *currentTime = [dateFormatter stringFromDate: [NSDate date]];
timeLabel.text = currentTime;

ただし、これはアプリケーションがロードされたときだけ時間を与えます。実行を継続する時間を取得するにはどうすればよいですか?デジタル時計のように。

4

3 に答える 3

9

これを使って:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];  
[dateFormatter setTimeStyle: NSDateFormatterShortStyle];

[NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(targetMethod:)
userInfo:nil
repeats:YES]

セレクターメソッドは次のようになります。

-(void)targetMethod:(id)sender
{
  NSString *currentTime = [dateFormatter stringFromDate: [NSDate date]];
  timeLabel.text = currentTime;
}
于 2012-06-13T16:05:40.310 に答える
6

NSTimerを実装する

NSTimerを使用するにはどうすればよいですか?

[NSTimer scheduledTimerWithTimeInterval:1.0     
                                 target:self
                               selector:@selector(targetMethod:)     
                               userInfo:nil     
                                repeats:YES];

次に、targetMethodを実装して、時間を確認して更新します!!!

私の場合、おそらく最初の時刻を取得し、1秒のタイマーを使用して内部時刻を更新するだけです。

より高速なタイマー(たとえば4〜8倍高速)を実装することで、より高いタイミング解像度を実現できます。これにより、同期が外れることはほとんどありませんが、同期が外れると、次のように再同期できます。 [NSDatadate]によって返される時刻。つまり、バックグラウンドタスクの実行速度が速いほど、返された実際の時間との再同期が容易になります。これは、ターゲットメソッド内で数回に1回だけ同期をチェックすることも意味します。

イムが言っていることはナイキストを覚えていることだと思います。ナイキストの理論は(本質的に) 、サンプリングから取得したデータセットを使用して最終的に再現しようとする解像度の少なくとも2倍の速度でサンプリングする必要があると述べています。この場合、1秒に1回の更新をユーザーに表示しようとしている場合は、実際には、1秒の状態から次の状態への遷移をキャッチするために1/2秒以上の速度でサンプリングする必要があります。

于 2012-06-13T16:02:11.080 に答える
0

:-.hファイルで宣言します

@property(nonatomic , weak) NSTimer *timer;
@property (weak, nonatomic) IBOutlet UIImageView *imgViewClock; //Image of Wall Clock
@property (weak, nonatomic) IBOutlet UIImageView *hourHandImgView; //Image of Hour hand
@property (weak, nonatomic) IBOutlet UIImageView *minuteHandImgView; //Image of Minute hand
@property (weak, nonatomic) IBOutlet UIImageView *secondHandImgView; //Image of Second hand

:-.mファイルで宣言します

- (void)viewDidLoad {
[super viewDidLoad];
//Clock
self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(tick) userInfo:nil repeats:YES];
[self tick];
}

//ここで(チェック)メソッドを割り当てます

-(void)tick {

NSCalendar *calendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSUInteger units = NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
NSDateComponents *Components = [calendar components:units fromDate:[NSDate date]];
CGFloat hours = (Components.hour / 12.0) * M_PI * 2.0;
CGFloat mins = (Components.minute / 60.0) * M_PI * 2.0;
CGFloat seconds = (Components.second / 60.0) * M_PI * 2.0;

self.hourHandImgView.transform = CGAffineTransformMakeRotation(hours);
self.minuteHandImgView.transform = CGAffineTransformMakeRotation(mins);
self.secondHandImgView.transform = CGAffineTransformMakeRotation(seconds);

}
于 2016-07-06T05:25:47.760 に答える