写真アプリによく似た画像ビューアを開発しています。
これは、インターネットから読み込まれた画像でページングが有効になっている UIScrollView であるため、LazyTableImages サンプルの一部を変更しました。スクロール ビューとその中の各 ImageView には、すべての自動サイズ変更マスク フラグが設定されています。
回転中にサイズ変更がどのように行われているかを最初に観察したときは、問題ないように見えましたが、スクロール ビューを操作しようとすると、contentView のサイズもプログラムで変更する必要があることに気付きました。ビューコントローラーに didRotateFromInterfaceOrientation: を実装することでそれを行いました。
[self.scrollView setContentSize:CGSizeMake(numberOfImages * portraitWidth, [scrollView bounds].size.height)];
インタラクションが適切に動作していると、2 番目の写真を表示して回転させると、1 番目と 2 番目の写真の両方の部分が画面に表示されることがわかりました。contentOffset も変更する必要がありました。
UIScrollView の scrollRectToVisible:animated: メソッドを使用する方法と、contentOffset プロパティを直接設定する方法の両方で、この 2 つの方法を修正しようとしました。そして、このコードを Orientation の変化に対する "1 ステップ" と "2 ステップ" の両方の応答の実装に入れてみました。例えば:
-(void)didAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
[self.scrollView setContentOffset:CGPointMake(currentlyViewedPhotoIndex * largeImageHeight,0) animated:YES];
ただし、すべての場合において、それは地獄のようにぎこちなく見えます。スクロールがはっきりと見えるか、ジャンプするだけです。ううううううう!写真アプリとまったく同じように動作するようにこれを行う方法はありますか?