ページ

2008年2月15日金曜日

IKSlideshow

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

MacOSX 10.5 から手軽にスライドショーができる IKSlideshowが加わった。

IKSlideshow Class Reference

このクラスを使うとおなじみのスライドショーが数行のコードで作れてしまう。







さっそくサンプルを作ってみた。



サンプル:IKSSample.zip

ボタンを押すと壁紙(/Library/Desktop Pictures/*.jpg)のスライドショーが始まる。

書いたコードは MyControllerクラスのみ。

MyController.h

#import 
#import

@interface MyController : NSObject {

NSMutableArray *_image_list;
}
-(IBAction)start:(id)sender;

@end


MyController.m
@implementation MyController

-(id)init .....(1)
{
self = [super init];

NSString* path = @"/Library/Desktop Pictures";
NSArray* array = [[NSFileManager defaultManager] directoryContentsAtPath:path];

_image_list = [[NSMutableArray alloc] init];

for (NSString* name in array) {
if ([[name pathExtension] isEqualToString:@"jpg"]) {
[_image_list addObject:[path stringByAppendingPathComponent:name]];
}
}

return self;
}

-(IBAction)start:(id)sender ...(3)
{
[[IKSlideshow sharedSlideshow]
runSlideshowWithDataSource:(id)self
inMode:IKSlideshowModeImages
options:nil];
}
- (NSUInteger)numberOfSlideshowItems ...(2a)
{
return [_image_list count];
}

- (id)slideshowItemAtIndex: (NSUInteger)index ....(2b)
{
return [_image_list objectAtIndex:index];
}

@end


(1) インスタンス初期化時(init)に /Library/Desktop Pictures/*.jpg のパス一覧を作り _image_listへ格納しておく。
(2a)(2b) IKSlideshowはスライドショーで表示する内容をデータソースから取得する。データソースは IKSlideshowDataSourceプロトコルで定義されている。画像数を返す numberOfSlideshowItems と 画像データ(ファイル名)を返す slideshowItemAtIndex: の2つを最低限実装する必要がある。
(3) ボタンが押されたら IKSlideshow のインスタンスへ メッセージ runSlideshowWithDataSource:inMode:options: を送る。するとスライドショーが始まる。

コードはこれだけ。データソースで提供するデータはファイル名でも良いし、NSImageでも良い。

IKSlideshow.h 抜粋
// export an item to the given application
// The item can be:
// - NSImage *
// - NSString * (path)
// - NSURL *
// - an NSArray of NSImage / NSString / NSURL
+ (void) exportSlideshowItem: (id) item
toApplication: (NSString *) applicationBundleIdentifier;
@end




ImageKitは他にもいろいろと面白いクラスがある。今回の IKSlideshowも含めてプログラミングガイドが ADCで出ている。
Introduction to Image Kit Programming Guide

ADCのサンプルプログラム
IKSlideshowDemo

木下さんによる紹介もあった。
LeopardのImage KitでiPhotoを作る--一手間加えてiPDF?も作っちゃおう


- - - -
これだけ簡単に利用できると画像や PDFを使うアプリでは今後ついてて当たり前の機能になるな。