フレーム (1000, 500) と contentSize (1000, 1500) の垂直スクロール スクロール ビューがあります。これはうまくいきます。ただし、ズームインするとすぐに、コンテンツのサイズがズーム前に見ていたものにトリミングされるため、元の境界を超えて垂直方向にスクロールできなくなります。つまり、デフォルト ビューから 2 倍にズームすると、contentSize が予想される (2000, 3000) ではなく (2000, 1000) として報告されるようになりました。見ていた最初の (1000, 500) の四角形を超えてスクロールできません。ズームアウトして 1 倍に戻すと、垂直方向にスクロールできなくなります。contentSize を (1000, 500) に変更します。
これを修正するにはどうすればよいですか? 同じ UIScrollView でスクロールとズームを組み合わせることはできませんか? ズーム前に高さを保存してから、didEndZooming デリゲート メソッド (contentSize = (width, savedHeight * scale)) で contentSize を修正しようとしましたが、着陸時にジャンプするなど、あらゆる種類の奇妙な動作が表示されます。
これは箱から出してすぐに動作するはずではありませんか? 私はクレイジーですか?
- (void)createPage {
self.fullWidthScroller = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,LANDSCAPE_WIDTH,LANDSCAPE_HEIGHT)];
[self.view addSubview:self.fullWidthScroller];
self.fullWidthScroller.contentSize = CGRectMake(0,0,LANDSCAPE_WIDTH,LANDSCAPE_HEIGHT*2);
self.fullWidthScroller.delegate = self;
self.fullWidthScroller.minimumZoomScale = 1.0;
self.fullWidthScroller.maximumZoomScale = 3.0;
self.fullWidthScroller.bouncesZoom = YES;
self.container = [[UIView alloc] initWithFrame:CGRectMake(0,0,LANDSCAPE_WIDTH,LANDSCAPE_HEIGHT)];
[self.fullWidthScroller addSubview:self.container];
self.page = [[SinglePageViewStretched alloc] init];
[self.container addSubview:self.page]; //container gets another view added elsewhere
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return self.container;
}
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale {
NSLog(@"size: %@", NSStringFromCGSize(scrollView.contentSize));
NSLog(@"offset: %@", NSStringFromCGPoint(scrollView.contentOffset));
//scrollView.contentSize = CGSizeMake(scrollView.contentSize.width, self.contentSizeHeight * scale);
}