簡易スライドビューア [9] ライブラリ化へ一歩

2010年9月24日金曜日 | Published in | 0 コメント

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

後々使いわしができるように UIViewController 内に実装していたコードを別のクラスへまとめた。

XCGalleryView


新しく XCGalleryView というクラスを作った。
@class XCGalleryView;
@protocol XCGalleryViewDelegate

-(NSInteger)numberViewsInGallery:(XCGalleryView*)galleryView;
-(UIImage*)galleryImage:(XCGalleryView*)galleryView filenameAtIndex:(NSUInteger)index;

@end


@interface XCGalleryView : UIView <UIScrollViewDelegate> {

 NSInteger currentImageIndex_;
 
 UIScrollView* scrollView_;
 NSInteger contentOffsetIndex_;
 
 NSMutableArray* imageScrollViews_;
 
 CGSize previousScrollSize_;
 
 CGFloat spaceWidth_;
 
 id <XCGalleryViewDelegate> delegate_;
}

@property (nonatomic, assign) NSInteger currentImageIndex;

@property (nonatomic, retain) UIScrollView* scrollView;
@property (nonatomic, assign) NSInteger contentOffsetIndex;

@property (nonatomic, retain) NSMutableArray* imageScrollViews;

@property (nonatomic, assign) IBOutlet id <XCGalleryViewDelegate> delegate;

@property (nonatomic, assign) CGFloat spaceWidth;
@end

合わせて XCGalleryViewDelegateというプロトコルを定義した。UITableViewDataSourceのように表示する画像情報を取得するのに使う。

実装はソースコードを参照のこと。


利用


InterfaceBuilderで UIViewを貼り付けた後、クラスを XCGalleryView に変え、File's Owner をdelegate先にしておく。


そして XCGalleryViewDelegate の2つのメソッドを実装する。
-(NSInteger)numberViewsInGallery:(XCGalleryView*)galleryView
{
 return [self.imageFiles count];
}

-(UIImage*)galleryImage:(XCGalleryView*)galleryView filenameAtIndex:(NSUInteger)index
{
 return [UIImage imageWithContentsOfFile:[self.imageFiles objectAtIndex:index]];
}

これで終わり。


ソースコード


GitHubからどうぞ。
EasyGallery at 2010-09-24 from xcatsan's iOS-Sample-Code - GitHub


参考情報


ライブラリ化にあたっては下記サイトのコードが参考になった。
iPhone/iPad – AppStore like UIScrollView with paging and preview | blog.sallarp.com

Responses

Leave a Response

人気の投稿(過去 30日間)