注:私は新しいソリューションを下記のUPDATE回答に追加しました。フェードイン/アウトモバイルSafariのようなUIScrollViewのコンテンツはタブ内にあります
iPhone/iPod touchのMobile Safariのタブで見た効果を再現しようとしています。
基本的には、4つの再利用可能なUIView(リングバッファーのように動作する)を保持し、水平方向にスクロールするUIScrollViewです。スクロールすると、UIViewの不透明度はオフセットとシームレスにフェードイン/アウトされます。
現在、私はすべて- (void)scrollViewDidScroll:(UIScrollView *)scrollView
の汚れた仕事をしています。例えば、UIScrollViewからcontentOffsetを取得し、ページングを決定し、contentOffsetと各UIView位置との間の差分を計算し、scrollViewDidScroll:
が呼び出された時点の各UIViewのアルファ値を決定/設定する。
これは機能し、パフォーマンスは正常です。すべてがスムーズに実行されますが、唯一の問題はあまりにも多くの計算です。
私はUIViewののbeginAnimations:
とcommitAnimations:
を試してみましたが、それは1以来、scrollViewDidScroll:
に役に立たないのです)新しいアルファ値は、まだ自分で計算する必要があり、2)scrollViewDidScrollは:スクロールするとき、それはここにアニメーションを行うには無意味だと呼ばれ続けました。コアアニメーションでこの部分を書き直す方法はありますか?だから私は、各UIViewのアルファ値で自分で数学を行う必要はなく、代わりに、私はコアアニメーションに全体の作品を残すことができます。
これを今すぐ見つけて、それは素晴らしいです - 共有ありがとう! 1つのグリッチ:最初のアルファは、単独のオフスクリーンビューに設定されていません。私はupdateAlphaを明示的に呼び出すことができますが、開始時に明示的にcontentOffsetを設定するだけで十分でしょう。思考? –