5種類のアニメーションを実行する「DCAnimationLite」クラス

5種類のアニメーションをシンプルな記述で実行する「DCAnimationLite」クラスを作成しました。主な機能は以下の通りです。

主な機能

  1. フェードイン・フェードアウトアニメーション
  2. スライドインアニメーション
  3. 回転アニメーション
  4. 拡大縮小アニメーション
  5. 平行移動アニメーション

ダウンロード

サンプルソースコード

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
#import "ViewController.h"

@interface ViewController ()

@property BOOL isAnimationTargetFadeIn;

@end

@implementation ViewController

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

//フェードアニメーション実行
- (IBAction)startFadeAnimation:(id)sender {
  //アニメーション秒数とフェードモードを指定
  [DCAnimation fade:self.animationTargetImage
           duration:0.5f
           isFadeIn:_isAnimationTargetFadeIn];
  //フェードインフラグ切り替え
  _isAnimationTargetFadeIn = !_isAnimationTargetFadeIn;
}

//スライドアニメーション実行
- (IBAction)startSlideAnimation:(id)sender {
  //アニメーション秒数と目標座標・サイズを指定
  [DCAnimation slide:self.animationTargetImage
            duration:0.5f
             aimRect:CGRectMake(64, 64, 57, 57)];
}

//回転アニメーション実行
- (IBAction)startRotateAnimation:(id)sender {
  //アニメーション秒数と目標回転度数を指定
  [DCAnimation rotate:self.animationTargetImage
             duration:0.5f
             aimAngle:90];
}

- (IBAction)startScaleAnimation:(id)sender {
  //アニメーション秒数と目標スケール値を指定
  [DCAnimation scale:self.animationTargetImage
            duration:0.5f
            aimScale:2.0f];
}

- (IBAction)startTranslateAnimation:(id)sender {
  //アニメーション秒数とXYの移動量を指定
  [DCAnimation translate:self.animationTargetImage
                duration:0.5f
             movePosition:100];
}

@end

ソースコード

DCAnimationLite.h

1
2
3
4
5
6
7
8
9
10
11
12
#import <UIKit/UIKit.h>

@interface DCAnimationLite : UIView

#pragma mark - public method
+ (void)fade:(UIView *)imageView duration:(float)duration isFadeIn:(BOOL)isFadeIn;
+ (void)slide:(UIView *)imageView duration:(float)duration aimRect:(CGRect)rect;
+ (void)rotate:(UIView *)imageView duration:(float)duration aimAngle:(float)angle;
+ (void)scale:(UIView *)imageView duration:(float)duration aimScale:(float)scale;
+ (void)translate:(UIView *)imageView duration:(float)duration movePosition:(float)position;

@end

DCAnimationLite.m

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
#import "DCAnimationLite.h"

@implementation DCAnimationLite

// フェードアニメーション
+ (void)fade:(UIView *)imageView duration:(float)duration isFadeIn:(BOOL)isFadeIn
{
  [UIView beginAnimations:nil context:NULL];
  [UIView setAnimationDuration:duration];
  imageView.alpha = isFadeIn ? 0 : 1.0f;
  imageView.alpha = isFadeIn ? 1.0f : 0;
  [UIView commitAnimations];
}

// スライドアニメーション
+ (void)slide:(UIView *)imageView duration:(float)duration aimRect:(CGRect)rect
{
  [UIView beginAnimations:nil context:NULL];
  [UIView setAnimationDuration:duration];
  [imageView setFrame:rect];
  [UIView commitAnimations];
}

// 回転アニメーション
+ (void)rotate:(UIView *)imageView duration:(float)duration aimAngle:(float)angle
{
  [UIView beginAnimations:nil context:NULL];
  [UIView setAnimationDuration:duration];
  CGAffineTransform rotate = CGAffineTransformMakeRotation(angle * (M_PI / 180.0f));
  [imageView setTransform:rotate];
  [UIView commitAnimations];
}

// 拡縮アニメーション
+ (void)scale:(UIView *)imageView duration:(float)duration aimScale:(float)scale
{
  [UIView beginAnimations:nil context:NULL];
  [UIView setAnimationDuration:duration];
  CGAffineTransform aimScale = CGAffineTransformMakeScale(scale, scale);
  [imageView setTransform:aimScale];
  [UIView commitAnimations];
}

// XY方向に平行移動
+ (void)translate:(UIView *)imageView duration:(float)duration movePosition:(float)position
{
  [UIView beginAnimations:nil context:NULL];
  [UIView setAnimationDuration:duration];
  CGAffineTransform translate = CGAffineTransformMakeTranslation(position, position);
  [imageView setTransform:translate];
  [UIView commitAnimations];
}

@end

お薦めの参考書


Cocos2d-xでゲームを開発したいという方に必携の1冊です。実際にゲームを作りながら学習して行く内容で、とても身に付き易い構成になっています。プログラミング経験はあるけれどゲーム開発は未経験という方にお薦めの内容となっております。

About

Masaki Hirokawa (@dolice_apps)

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

iPhone apps

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