遅延実行タイマーの使用方法

タイマーイベントを遅延実行するサンプルを以下に作成しました。

サンプルでは、タイマーを定義した2秒後にラベルのアニメーションイベントを呼び出しています。

サンプルダウンロード

タイマー定義

1
2
3
4
5
6
7
8
9
10
//遅延実行のタイマー定義
- (void)setTimeInterval
{
  //2秒後にセレクタメソッドを実行する
  _completedTimer = [NSTimer scheduledTimerWithTimeInterval:2.0f
                                                     target:self
                                                   selector:@selector(onCompletedAnimationTimerEvent:)
                                                   userInfo:nil
                                                    repeats:NO];
}

タイマー削除

1
2
3
4
5
//遅延実行のタイマーイベント
- (void)onCompletedAnimationTimerEvent:(id)sender
{
  [_completedTimer invalidate];
}

ソースコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#import "ViewController.h"

@interface ViewController ()

//アニメーションさせるラベル
@property UILabel *animationLabel;
//遅延実行タイマー
@property NSTimer *completedTimer;

@end

@implementation ViewController

- (void)viewDidLoad
{
  [super viewDidLoad];
  //遅延実行のタイマー定義
  [self setTimeInterval];
}

- (void)didReceiveMemoryWarning
{
  [super didReceiveMemoryWarning];
}

//遅延実行のタイマー定義
- (void)setTimeInterval
{
  //2秒後にセレクタメソッドを実行する
  _completedTimer = [NSTimer scheduledTimerWithTimeInterval:2.0f
                                                     target:self
                                                   selector:@selector(onCompletedAnimationTimerEvent:)
                                                   userInfo:nil
                                                    repeats:NO];
}

//遅延実行のタイマーイベント
- (void)onCompletedAnimationTimerEvent:(id)sender
{
  [_completedTimer invalidate];
  [self initAnimationLabel];
  [self slideInAnimation];
}

//アニメーションさせるラベルを初期化
- (void)initAnimationLabel
{
  _animationLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 568, 320, 568)];
  _animationLabel.backgroundColor = [UIColor blackColor];
  [self.view addSubview:_animationLabel];
}

//スライドインアニメーション
- (void)slideInAnimation
{
  //アニメーション開始
  [UIView beginAnimations:nil context:NULL];
  //アニメーション秒数
  [UIView setAnimationDuration:1.0f];
  //デリゲート指定
  [UIView setAnimationDelegate:self];
  //アニメーションの目標値を指定
  [_animationLabel setFrame:CGRectMake(0, 0, 320, 568)];
  //アニメーション実行
  [UIView commitAnimations];
}

@end

お薦めの参考書

詳解 Swift 改訂版
Swiftのかなり入り込んだところまで解説しながら、実践コードを多数収録しています。応用本になりますので、入門書を読み終えて中級者から上級者に差し掛かる時に読むことをお勧めします。読み物としてだけではなくリファレンスとしても使用できます。

   このエントリーをはてなブックマークに追加

About

Masaki Hirokawa (@dolice_apps)

デザインエンジニア 廣川政樹の開発ブログ。Objective-Cや Javaなど iPhone/Androidアプリ開発に関する技術情報を掲載しています。

iPhone apps

  • リラックス・ヒーリング(無料)
  • 望みが叶う!引き寄せの法則アプリ(無料)
  • ミステリー - 怖い話や不思議な体験、都市伝説まとめ
  • 浮世絵壁紙 - 美しい日本画ギャラリー(無料)
  • 綺麗な壁紙HD iPhone 7/7 Plus/SE & iPod対応(無料)
  • クールな壁紙HD iPhone 7/7 Plus/SE & iPod対応(無料)

Android apps

  • 浮世絵壁紙 - 美しい日本画ギャラリー
  • 綺麗な高画質壁紙

Objective-C Classes

Tag Cloud

ActionScript(9) ActionScript3(7) Ad(4) Adfurikun(2) AdMob(9) Android(10) Animation(17) AppDelegate(3) ARC(1) ArrayList(1) AVAudioPlayer(4) AVAudioSession(1) AVFoundation(3) Banner(2) Bitmap(1) Camera(4) CGAffineTransform(4) CGBlendMode(2) CGContextRef(1) CGImageRef(1) Classes(44) CLLocationManager(1) ConnectivityManager(1) ContentResolver(1) CoreLocation(2) Delegate(3) Device(7) Display(1) DisplayMetrics(1) Download(101) Facebook(6) Foundation(72) Framework(2) Google Analytics(1) Handler(1) iAd(6) ImageView(1) In-AppPurchase(1) iOS(12) iOS 7(15) iOS 7.1(3) iOS 8(1) iPad(7) iPhone(21) iPhone 6(4) Java(7) JavaScript(2) LINE(4) Localize(1) Magazine(1) MediaStore(1) MFComposeViewController(1) Nend(1) NetworkInfo(1) NSArray(23) NSCalendar(3) NSData(2) NSDate(7) NSDateComponents(2) NSDateFormatter(2) NSDictionary(12) NSEnumerator(1) NSIndexSet(1) NSInteger(6) NSMutableArray(17) NSMutableDictionary(5) NSMutableOrderedSet(7) NSMutableString(4) NSMutableURLRequest(1) NSNotificationCenter(1) NSNumber(1) NSObject(1) NSOrderedSet(7) NSRange(2) NSSelectorFromString(1) NSSet(6) NSString(19) NSTimer(4) NSTimeZone(1) NSURL(7) NSURLConnection(1) NSURLRequest(2) NSUserDefaults(7) NSXMLParser(2) Objective-C(222) PHP(1) Products(14) QuartzCore(3) RSS(2) Runnable(1) Sample(51) Screensaver(9) SDK(2) ShareCompat(1) Social(10) StoreKit(1) Twitter(6) UIAccelerometer(3) UIActionSheet(1) UIActivityIndicator(1) UIActivityIndicatorView(3) UIActivityViewController(1) UIAlertView(5) UIApplication(7) UIButton(4) UIColor(3) UIDatePicker(5) UIDevice(6) UIDeviceOrientation(1) UIEvent(6) UIImage(15) UIImagePickerController(4) UIImageView(12) UIKit(58) UILabel(7) UINavigationBar(4) UINavigationItem(1) UIPasteboard(4) UIScreen(1) UIScrollBar(1) UIScrollView(1) UISlider(3) UIStoryboardSegue(3) UISwitch(1) UITabBar(3) UITableView(4) UITextField(2) UIView(11) UIViewAnimationTransition(1) UIViewController(4) UIWebView(5) WindowManager(1) Xcode(48) Xcode 5(8) Xcode 5.1(2)