0

UIScrollView の 1 つのセクション (1 つの写真) だけでコンテンツを非表示にしようとしており、contentOffset以下のようにそのセクションにアクセスするために を使用しています。コンテンツ オフセットが 0 ~ 320 (画像のサイズ) の場合、画面上のさまざまな要素を非表示にしています。ただし、ユーザーが次の写真にスワイプすると (コンテンツ オフセットが 320 より大きい場合)、コンテンツをもう一度表示したいと思います。コードの最初の部分は問題なく動作しますが、ユーザーがスワイプしたときにコンテンツ オフセットが 320 を超えていることが検出されるかどうかはわかりません。私は ScrollViews にかなり慣れていないので、コンテンツ オフセットを常に更新するのか、それとも更新の原因となるユーザー スワイプを検出するのかがわかりません。ユーザーが最初の画像を超えてスクロールした後、非表示の要素を NO にする方法についてのアイデアはありますか?

  if (scroller.contentOffset.x >=0<=320)
                {
                    preview.hidden = YES;
                    share.hidden = YES;
                    barView.hidden = YES;
                    saveButton.hidden = YES;
                    shaddows.hidden = YES;

                }
                else if (scroller.contentOffset.x >320)
                {
                   //This part does not work
                    preview.hidden = NO;
                    share.hidden = NO;
                    barView.hidden = YES;
                    saveButton.hidden = YES;
                    shaddows.hidden = YES;
                }

これが私のスクローラーコードの残りの部分です:

int PageCount = 2;

        NSMutableArray *myArray =[[NSMutableArray alloc]initWithObjects:@"12-4.png",@"13-4.png",nil];

        scroller = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
        scroller.scrollEnabled=YES;
        scroller.backgroundColor = [UIColor clearColor];
        scroller.pagingEnabled = YES;
        [self.view addSubview:scroller];
        width=scroller.frame.size.width;
        xPos=0;
        for (int i=0; i<PageCount; i++)
        {
            ImgView = [[UIImageView alloc]initWithFrame:CGRectMake(xPos, 0, scroller.frame.size.width, scroller.frame.size.height)];
            [ImgView setImage:[UIImage imageNamed:[myArray objectAtIndex:i]]];
            [scroller addSubview:ImgView];
            scroller.contentSize = CGSizeMake(width, 0);
            width +=scroller.frame.size.width;
            xPos  +=scroller.frame.size.width;
        }

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

4

1 に答える 1

0

この行を変更

  if (scroller.contentOffset.x >=0<=320)

  if (scroller.contentOffset.x <= 320)

オリジナルはあなたが思っていることをしないからです。

このコードはscrollViewDidScroll:デリゲート メソッドにある必要があります (コントローラーがスクロール ビューのデリゲートであることを確認してください)。

いくつかのログ ステートメントを追加して、ユーザーがスクロールしているときにコンテンツが何をオフセットし、コードがどのページであると考えているかを出力するようにします。

于 2013-09-03T07:12:13.820 に答える