0

iPhoneの画面サイズ(縦長)の2倍のコンテンツを持つUIScrollviewがあります。2 つのイメージビューを格納します。ユーザーはスクロールして別のページに移動できます。inageviews をタップすると、別の ViewController がモーダルに表示され、その画像が詳細に表示されます。

問題は、ユーザーがそのモーダル VC を閉じて、2 つの画像を含む元の VC に戻ると、両方の画像がスクロールビューのコンテンツ内で x 軸上で 160 ポイントシフトするため、最初の画像の原点が (0 ,0)、2 つ目は (320, 0) にあり、モーダル VC の解任後、それぞれ (-160, 0) と (160, 0) に切り替えます。

これを調査したところ、処理する必要があることがわかりました

  - (void)viewWillAppear:(BOOL)animated {
       [super viewWillAppear:animated];
      //here I try to manipulagte and foce another origin point, but it just doesn't 
     update
  } 

他の人はこのような解決策を見つけました

  [self.scrollView setContentOffset:CGPointZero];

ただし、これにより、ユーザーが2番目の画像をクリックした場合でも、スクロールが最初の画像に戻ります!!

何か案は?

4

1 に答える 1

0

モーダル VC を閉じると、scrollView の位置が自動的にずれる理由については完全にはわかりませんが、最善の策はコンテンツ オフセットを手動で変更することです (回答に示されているように)。調整する必要があるのは、画像の 1 つをタップしたときに、そのビューへの参照 (おそらくImageView) を親 VC のプロパティに保持することだけです。setContentOffset を呼び出すときは、そのようにします (ビューを というプロパティに格納したとしますselectedView) 。

self.scrollView.contentOffset = CGPointMake(self.selectedView.frame.origin.x, self.selectedView.frame.origin.y)

これで正しい位置に調整されます(必要に応じて、値を少し足したり引いたりして、少しオフセットすることができます)

于 2013-07-08T02:19:18.690 に答える