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