[Info] iPhone版Safariのようなページ切替ビュー

2011年11月17日木曜日 | Published in | 0 コメント

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


iPhone版Safariのようなページ切替ビュー。こんなやつ。
ページを挿入・削除するとアニメーションが起こる。

タップするとアニメーションして画面にフィットする。画面上部にヘッダビューを付けてカスタマイズすることができる。

使い方は、まずHGPageScrollView を作りメインのビューへ貼る。
HGPageScrollView *pageScrollView =
   [[[NSBundle mainBundle] loadNibNamed:@"HGPageScrollView" owner:self options:nil] objectAtIndex:0];

[self.view addSubview:pageScrollView];
サンプルではページの定義を XIBファイルで行っていた。XIBで定義すれば容易にカスタマイズできる。

後は Data Source/Delegate を実装すればいい。
@protocol HGPageScrollViewDataSource 
@required
// Page display. Implementers should *always* try to reuse pageViews by setting each page's reuseIdentifier. 
// This mechanism works the same as in UITableViewCells.  
- (HGPageView *)pageScrollView:(HGPageScrollView *)scrollView viewForPageAtIndex:(NSInteger)index;

@optional

- (NSInteger)numberOfPagesInScrollView:(HGPageScrollView *)scrollView;   // Default is 1 if not implemented

// you should re-use the UIView that you return here, only initialize it with appropriate values. 
- (UIView *)pageScrollView:(HGPageScrollView *)scrollView headerViewForPageAtIndex:(NSInteger)index;  

- (NSString *)pageScrollView:(HGPageScrollView *)scrollView titleForPageAtIndex:(NSInteger)index;  
- (NSString *)pageScrollView:(HGPageScrollView *)scrollView subtitleForPageAtIndex:(NSInteger)index;  

@end

@protocol HGPageScrollViewDelegate

@optional

// Dragging
- (void) pageScrollViewWillBeginDragging:(HGPageScrollView *)scrollView;
- (void) pageScrollViewDidEndDragging:(HGPageScrollView *)scrollView willDecelerate:(BOOL)decelerate;

// Decelaration
- (void)pageScrollViewWillBeginDecelerating:(HGPageScrollView *)scrollView;
- (void)pageScrollViewDidEndDecelerating:(HGPageScrollView *)scrollView;

// Called before the page scrolls into the center of the view.
- (void)pageScrollView:(HGPageScrollView *)scrollView willScrollToPage:(HGPageView*)page atIndex:(NSInteger)index;

// Called after the page scrolls into the center of the view.
- (void)pageScrollView:(HGPageScrollView *)scrollView didScrollToPage:(HGPageView*)page atIndex:(NSInteger)index;

// Called before the user changes the selection.
- (void)pageScrollView:(HGPageScrollView *)scrollView willSelectPageAtIndex:(NSInteger)index;
- (void)pageScrollView:(HGPageScrollView *)scrollView willDeselectPageAtIndex:(NSInteger)index;

// Called after the user changes the selection.
- (void)pageScrollView:(HGPageScrollView *)scrollView didSelectPageAtIndex:(NSInteger)index;
- (void)pageScrollView:(HGPageScrollView *)scrollView didDeselectPageAtIndex:(NSInteger)index;

@end


よく出来てる。見た目がなかなかいい。


Responses

Leave a Response

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