0

「メトロ」スタイルのUIScrollViewを作成しようとしています。これは、iTunesアプリが名前のない新しいiOSバージョンのパネルを処理する方法に似ています。

シーケンス内の次のビューが表示されるように、ビューをレイアウト/スクロールする方法がわかりません。contentSizeを画面の幅に保ちながら、各ビューを-10ish以上に移動して、上記のように表示されるようにするなど、さまざまなことを試しました。次のビューの一部が表示されるように、境界が画面よりも小さいscrollViewを作成してみました。何も機能しません。

これが私がやろうとしていることの図です: ここに画像の説明を入力してください

紙の上では非常に些細なことのように見えますが、私はそれを機能させることができないようです。

4

1 に答える 1

1

要件を誤解しているかどうかはわかりませんが、これを設定方法を確認するための出発点になる可能性があります。

- (void)viewDidLoad
{
  [super viewDidLoad];

  CGRect viewBounds      = self.view.bounds;
  CGRect scrollViewFrame = CGRectMake(0, 0, floorf(CGRectGetWidth(viewBounds) / 2.2), CGRectGetHeight(viewBounds));
  UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:scrollViewFrame];

  scrollView.center        = self.view.center;
  scrollView.contentSize   = CGSizeMake(CGRectGetWidth(viewBounds) * 3, CGRectGetHeight(viewBounds) * 3);
  scrollView.pagingEnabled = YES;
  scrollView.clipsToBounds = NO;

  UIPanGestureRecognizer *gestureRecognizer = scrollView.panGestureRecognizer;
  [self.view addGestureRecognizer:gestureRecognizer];

  for (int i = 0; i < 3; i++) {
    CGRect frame = CGRectMake(10.f + (i * CGRectGetWidth(scrollView.bounds)), 10.f, CGRectGetWidth(scrollView.bounds) - 20.f, (CGRectGetHeight(scrollViewFrame) * 3) - 20.f);
    UIView *view = [[UIView alloc] initWithFrame:frame];
    view.backgroundColor = [UIColor redColor];
    [scrollView addSubview:view];
  }

  [self.view addSubview:scrollView];
}

文字通り、これを空のviewControllerに入れるだけですviewDidLoad:

注意すべき重要事項は次のとおりです。

  • contentSizeすべてのパネルに十分な幅が必要です
  • clipsToBoundsNO追加のビューを見ることができるようにする必要があります
  • スクロールビューの境界は、基本的にメイン ビュー ポートです。
  • pagingEnabled設定する必要があります
  • スクロールビューから を取得し、代わりにそれを含むビューにアタッチpanGestureRecognizerして、含まれているビューの境界でパンが検出されるようにしました (これは大きい方です)。
于 2012-09-14T22:27:58.107 に答える