0
でScrollViewを実装する方法を

みんな、私はiPhoneのホーム画面のように、ページ制御とスクロールを実装しようとしているが、のUITableViewのセルにいますよねえ。TableViewCell

これを実行しようとしたのは、xibファイルを持つカスタムテーブルビューセルを作成し、その上にuipagecontrolとuiscrollviewを配置し、それをuitoutviewcellに接続したものです。

これは、カスタムセルの.hファイル内のコードです。

@interface ScrollableCell : UITableViewCell <UIScrollViewDelegate> 

@property (nonatomic, strong) IBOutlet UIScrollView *scrollView; 
@property (nonatomic, strong) IBOutlet UIPageControl *pageControl; 
@property (nonatomic, strong) NSMutableArray *viewControllers; 

これは、プロパティを合成した後のカスタムセルの.mファイルのコードです。

- (CGSize)contentSizeForPagingScrollView { 
CGRect bounds = self.scrollView.bounds; 
return CGSizeMake(bounds.size.width * [self.viewControllers count] , bounds.size.height); 
} 

@- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
{ 
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
if (self) { 
    // Initialization code 

    UIView *blueView = [[UIView alloc] initWithFrame:CGRectZero]; 
    [blueView setBackgroundColor:[UIColor blueColor]]; 

    UIView *redView = [[UIView alloc] initWithFrame:CGRectZero]; 
    [redView setBackgroundColor:[UIColor redColor]]; 

    UIView *yellowView = [[UIView alloc] initWithFrame:CGRectZero]; 
    [yellowView setBackgroundColor:[UIColor yellowColor]]; 

    self.viewControllers = [NSArray arrayWithObjects:blueView, redView, yellowView,nil]; 

    for (UIView *view in self.viewControllers) { 
     [view setFrame:CGRectMake([self.viewControllers indexOfObject:view]*self.scrollView.frame.size.width+5, 
            5, 
            self.scrollView.frame.size.width-10, 
            self.scrollView.frame.size.height-10.0)]; 
     [self.scrollView addSubview:view]; 

    } 

    self.pageControl.numberOfPages = [self.viewControllers count]; 
    self.pageControl.currentPage = 0; 

    self.scrollView.pagingEnabled = YES; 
    self.scrollView.backgroundColor = [UIColor blackColor]; 
    self.scrollView.showsVerticalScrollIndicator = NO; 
    self.scrollView.showsHorizontalScrollIndicator = NO; 
    self.scrollView.contentSize = [self contentSizeForPagingScrollView]; 
    self.scrollView.delegate = self; 
    [self.contentView addSubview:self.scrollView]; 
    [self.contentView addSubview:self.pageControl]; 
} 
return self; 
} 

-(void) scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
CGFloat pageWidth = scrollView.frame.size.width; 
int page = floor((scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1; 
self.pageControl.currentPage = page; 
} 

あなたは私がこの作業を手伝ってくれることを願っています。私が試みていることとは異なるアプローチ/より良いアプローチがある場合は、私に教えてください。私が達成しようとしているものの視覚的な参考のために

、私は思うのパルスニュースアプリは、法案に合う

http://itunes.apple.com/us/app/pulse-news-for-iphone/id377594176?mt=8

そのテーブルビュー、各セルの横スクロールと。

ありがとうございました。

答えて

0

私が試みているものとは異なるアプローチ/優れたアプローチがある場合は、教えてください。 私が達成しようとしていることの視覚的な参照のために、私はパルスニュースアプリが法案に適合していると思います。

これを設計するためのあなたの主な参照は、パルスアプリの場合は、開発者が実際にscrollviewsにませリゾートをやったことを知っている必要があります。 Pulseアプリはすべてテーブルビューです。 1つの主要な垂直テーブルビューと、垂直のテーブルビューを構成する各セル内のいくつかの水平の「ハッキング」テーブルビュー。

テーブルビューの非常にスマートな実装です。しかし、Pulse自身の開発者よりも、あなたにこれを説明する方が良いでしょう。スタンフォード大学のiOSプログラミングコースの講義に招待されました。 Its on iTunes U and it's at 6 min in the lecture called 10 Hacks to Go From Idea To #1 App.あなたはそれを見て、あなたのアプリデザインがあなたに適しているかどうかを考え直すべきでしょう。

+0

これは素晴らしいアイデアです。スクロールビューを使用すると、デバイスはメモリ管理を行います。たとえば、iPhoneのホーム画面で、新しい画面にスワイプすると、前の画面が表示されなくなります。 – abhi

関連する問題