コンテンツサイズが1200x480のUIScrollViewがあります。幅が600になる画像ビューがいくつかあります。右にスクロールするときは、コンテンツサイズを大きくし、すべてがスムーズになるようにオフセットを設定します(他の画像を追加したいのですが、それは重要ではありません)たった今)。したがって、基本的に、現在ビューポートにある画像は左側のどこかに残り、最終的にはスーパービューから削除されます。
さて、左にスクロールすると問題が発生します。私がやっていることは、画像をコンテンツサイズの最後に移動し(したがって、各画像ビューのorigin.xに600を追加します)、それに応じてコンテンツオフセットを設定します。これは、指が画面上にあり、ユーザーがドラッグしたときに機能します(scrollView.isTracking = YES)。ユーザーが左にスクロールして離すと(scrollView.isTracking = NO)、画像ビューは右に向かって速く移動しすぎて、ほぼ瞬時に消えます。ユーザーが手動でビューをドラッグしておらず、すでに手放した場合でも、画像をうまく動かして消えないようにする方法を知っている人はいますか?
水平方向にドラッグするためのコードは次のとおりです。
-(void) scrollViewDidScroll:(UIScrollView *)scrollView {
CGPoint offset = self.scrollView.contentOffset;
CGSize size = self.scrollView.contentSize;
CGPoint newXY = CGPointMake(size.width-600, size.height-480);
// this bit here allows scrolling towards the right
if (offset.x > size.width - 320) {
[self.scrollView setContentSize:CGSizeMake(size.width+320, size.height)];
[self.scrollView setContentOffset: offset];
}
// and this is where my problem is:
if (offset.x < 0) {
for (UIImageView *imageView in self.scrollView.subviews) {
CGRect frame = imageView.frame;
[imageView setFrame:CGRectMake
(frame.origin.x+newXY.x, frame.origin.y, 200, frame.size.height)];
}
[self.scrollView setContentOffset:CGPointMake(newXY.x+offset.x, offset.y)];
}
}
編集:これは現在機能しています-私はStreetScrollerを見て、それはすべて今は良いです。
ただし、scrollviewを拡大したいのですが、viewForZoomingInScrollViewが呼び出されることはありません。コンテンツサイズが大きいスクロールビューを拡大することはできませんか?