スライドショーのメソッド(3)

2010. 06. 12
●アクションメソッド

ツールバーの3つのアイテム、Start/Stopボタン(startStop:)、速度切り替えバー(changeDuration:)、モード変更ボタン(changeOrder:)のアクションメソッドを実装します。

●Start/Stopボタンのアクションメソッド

- (IBAction)startStop:(id)sender {
    // アニメーションの再生状態を取得
    BOOL isAnimating = [imageSlide isAnimating];

    // アニメーション停止処理
    if (isAnimating == YES) {
        [imageSlide stopAnimating];
        [btnStartStop setTitle:@"Start" forState:UIControlStateNormal];
    }
    else {
        [imageSlide startAnimating];
        [btnStartStop setTitle:@"Stop" forState:UIControlStateNormal];
    }
}

このメソッドはイメージビュー(imageSlide)のアニメーション状態をisAnimatingメソッドで取得し、動作していれば停止、停止していれば動作するように条件分岐しています。

同時に動作状態によって、Start/StopボタンのタイトルをsetTitle:forState:メソッドで変更しています。


・isAnimating
(UIImageViewクラス)

- (BOOL)isAnimating

アニメーションが実行されているかどうかを示すブールを返します。

実行されている場合はYES、それ以外の場合はNOを返します。


・stopAnimating
(UIImageViewクラス)

- (void)stopAnimating

レシーバの画像のアニメーションを停止します。


・startAnimating
(UIImageViewクラス)

- (void)startAnimating

レシーバの画像のアニメーションを開始します。

このメソッドは、常にリストの最初の画像からアニメーションを開始します。


・setTitle:forState:
(UIButtonクラス)

- (void)setTitle:(NSString *)title forState:(UIControlState)state

指定した状態で使うタイトルを設定します。

一般的にプロパティの状態を指定しない場合は、デフォルト値としてUIControlStateNormalの値を使用します。

UIControlStateNormal値が設定されていない場合、プロパティはシステムのデフォルト値になります。

したがって最低でも、通常状態の値を設定する必要があります。

title:指定した状態で使用するタイトルを指定します。

state:指定したタイトルで使用する状態を指定します。
この値はUIControlStateで表されます。
(UIControlStateについては『スライドショーのメソッド(2)』を参照してください)


●速度切り替えバーのアクションメソッド

- (IBAction)changeDuration:(id)sender {
    // 現在の再生状態を取得
    BOOL isAnimating = [imageSlide isAnimating];

    // スライダの値を取得し、アニメーションの長さを変更
    UISlider *slider = (UISlider *)sender;
    imageSlide.animationDuration = slider.value;

    // アニメーションを再開
    if (isAnimating == YES) {
        [imageSlide startAnimating];
    }
}

このメソッドはイメージビュー(imageSlide)のアニメーション状態をisAnimatingメソッドで取得、引数でスライダの値を取得してアニメーションの時間の長さを変更します。

スライダの値はid型で受け取るのでUISlider型に型変換(キャスト)し、valueプロパティで値を取得、animationDurationプロパティでイメージビューにアニメーションする時間の長さを指定します。

valueプロパティとanimationDurationプロパティについては『スライドショーのメソッド(2)』を参照してください。

最初にアニメーション状態を取得したのは、イメージビューの状態を変更すると自動的にアニメーションが停止されるからで、変更時にアニメーションが動作中であった場合はstartAnimatingメソッドで再開するようにしています。


●モード変更ボタンのアクションメソッド

- (IBAction)changeOrder:(id)sender {
    // 現在の再生状態を取得
    BOOL isAnimating = [imageSlide isAnimating];

    // 画像の配列を変更
    imageSlide.animationImages = [self animationImages];

    // アニメーションを再開
    if (isAnimating == YES) {
        [imageSlide startAnimating];
    }
}

スライダ同様、イメージビューの状態変更に伴う自動停止に対処するため、最初にアニメーションの状態を取得し、最後に再開する構造になっています。

モード変更の処理自体は、セグメンテッドコントロールの判別と画像配列の初期化も含めて、ユーザ定義メソッドであるanimationImagesで行っていますので、同メソッドを呼び出してanimationImagesプロパティで配列を入れ替えています。

animationImagesメソッドは『スライドショーのメソッド(1)』、animationImagesプロパティについては『スライドショーのメソッド(2)』を参照してください



参考文献

UIImageView Class Reference

UIButton Class Reference

基礎からのiOS SDK基礎からのiOS SDK
(2010/10/09)
鶴薗 賢吾、松浦 健一郎 他

商品詳細を見る






SoundLink Mini Bluetooth speaker_ii_limited
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
05 | 2017/06 | 07
Sun Mon Tue Wed Thu Fri Sat
- - - - 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 -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

SoundLink Mini Bluetooth speaker_ii_limited
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR