我的UIScrollView中包含了大量的内容,并使用“setZoomScale:animated”进行缩放,以适应scrollview框架。视图看起来已经正确缩小,并且在scrollview中正确定位。然而,用户可以滚动到内容区域之外(scrollview背景颜色显示)。似乎他可以滚动到原始内容大小(好像内容没有缩小)。
奇怪的是,用户第一次手动缩放后,一切都正常工作,scrollview再次受限于内容大小。
我在网上搜索过,并查阅了Apple文档和示例,但找不到任何人有同样的问题。苹果的示例似乎展示了与我的情况相同的内容。
我的内容是从UIView派生的自定义视图,其CALayer被CATiledLayer替换(如苹果的示例所示)。我自己通过drawLayer:inContext:绘制。以下是MyScrollViewController的代码片段:
奇怪的是,用户第一次手动缩放后,一切都正常工作,scrollview再次受限于内容大小。
我在网上搜索过,并查阅了Apple文档和示例,但找不到任何人有同样的问题。苹果的示例似乎展示了与我的情况相同的内容。
我的内容是从UIView派生的自定义视图,其CALayer被CATiledLayer替换(如苹果的示例所示)。我自己通过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...
希望有什么明显的东西我没有注意到...