我的UIScrollView填充了大量內容,然後用「setZoomScale:animated」放大,使其適合滾動視圖框架。視圖顯示適當縮小,並正確定位在滾動視圖中。但是,用戶可以在內容之外滾動(scrollview背景顏色顯示)。他似乎可以滾動到原始內容大小(就像內容沒有被縮小一樣)。 奇怪的是,在用戶第一次手動放大後,一切正常,並且滾動視圖再次被限制爲內容大小。UIScrollView在初始縮放後滾動得太遠
我搜索了網頁,並通過了蘋果文檔和示例,但找不到任何人有同樣的問題。蘋果公司的例子似乎和我一樣。
我的內容是一個派生自UIView的自定義視圖,其CALayer被CATiledLayer替換(如Apple示例中所示)。我在drawLayer:inContext:中自己畫圖。
下面是從MyScrollViewController的代碼片段:
- (void)loadView {
CGRect frame = [UIScreen mainScreen].applicationFrame;
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:frame];
scrollView.maximumZoomScale=1.0;
scrollView.delegate = self;
... setup theContentView ...
scrollView.contentSize = theContentView.bounds.size;
scrollView.contentInset = UIEdgeInsetsMake(20, 20, 20, 20);
[scrollView addSubview:theContentView];
self.view = scrollView;
double zoomScale = 0.5; // hardcoded for testing
[scrollView setZoomScale:zoomScale animated:NO];
NSLog(@"zoomscale=%g contentview=%@ contentsize=%@", zoomScale, NSStringFromCGSize(theContentView.bounds.size), NSStringFromCGSize(scrollView.contentSize));
[scrollView release];
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return theContentView;
}
該聲明的NSLog顯示了正確設置contentSize和zoomscale ...
希望有一些東西很明顯,我很想念...
有沒有人爲此提供解決方案?我有同樣的問題,只是相反。我的滾動查看是很小,以顯示包含的圖像(我不能滾動到圖像的底部)但一旦放大一切都很好。 – Maverick1st
我結束了在下一個runloop(而不是直接從loadView)設置zoomScale,它工作:「[self performSelector:@selector(initialZoom)withObject:nil afterDelay:0];」。但我重寫了很多其他內容,所以我不確定這是否是唯一需要的。 – fishinear
我終於有了同樣的想法,它完美的工作。在viewDidAppear中設置縮放比例的一個好處是,用戶看到動畫縮放並因此知道,他所看到的圖像是可縮放的:) – Maverick1st