1

uiscrollview上記のタイトルで既に述べたように、スクロール中に画像の背景をアニメーションでフェードアウトし、別の画像に置き換えたいと考えています。私のuiviewcontroller階層は単純です:

uiviewcontroller ---> uiimageview ---> uiscrollview

uiscrollview に関する追加情報: 1. 私の uiscrollview には、単純なuilabelものと一部uiimageview(のサブビューとしてのほんの一部)が含まれていuiscrollviewます。2. ページングを有効にする 3. 水平方向にスクロールする (問題がある場合)

だから、誰でもこの方法を達成する方法を教えてください。私はまだ初心者ですが、ここですべてのマスターから学びたいので、簡単な手がかりだけでも大歓迎です。

すべての助けに感謝し、良い一日をお祈りします.

4

2 に答える 2

1

これを行う別の方法もあります(より良いIMO):

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{
  UIImage * toImage = [UIImage imageNamed:@"myname.png"];
  [UIView transitionWithView:self.view
                duration:5.0f
                options:UIViewAnimationOptionTransitionCrossDissolve
                animations:^{
                self.imageView.image = toImage;
                } completion:nil];
}

編集

複数の画像/ページとの間を行き来する場合は、

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

そうすれば、ページを変更するときに競合が発生することはありません。

それに応じて画像を変更するには、switchステートメントを使用します。これは、ページを数字に関連付ける必要があることも意味します。Apple はこれを UIScrollView のプロパティとして含めていないため、次を使用して自分でデータを取得する必要があります。

int page = scrollView.contentOffset.x / scrollView.frame.size.width;

そして、これらすべてを素敵な方法で一緒に追加するには:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    int page = scrollView.contentOffset.x / scrollView.frame.size.width;

    //Use the switch to set the variable (toImage) depending on the page
    switch (page){
                    case 0:  UIImage * toImage = [UIImage imageNamed:@"imageOne.png"];
                    break;
                    case 1:  UIImage * toImage = [UIImage imageNamed:@"imageTwo.png"];
                    break;
                    case 2:  UIImage * toImage = [UIImage imageNamed:@"imageThree.png"];
                    break;
                    case 3:  UIImage * toImage = [UIImage imageNamed:@"imageFour.png"];
                    break;
                 }

        //use the variable (toImage) and perform the transition from the current image

        [UIView transitionWithView:self.view
                                  duration:5.0f
                                  options:UIViewAnimationOptionTransitionCrossDissolve
                                  animations:^{
                                  self.imageView.image = toImage;
                                  } completion:nil];
}

私は上記のコードをテストしていませんが、C と Obj C に関する私の知識から、動作するはずです。

于 2013-09-06T19:54:24.090 に答える