UIScrollView奇怪的行为:放大,平移,缩小叶子内容视图未经中断

时间:2010-02-05 18:13:42

标签: iphone uiscrollview

我有一个自定义的UIViewController子类控制一个包含UIImageView的UISCrollView,设置如下:

UIViewController
+ UIScrollView (delegate: UIViewController, viewForZoomingInView: UIImageView)
  + UIImageView

我可以使用UIScrollView放大我的图像,并平移 - 但如果我这样做,使得视图的中心不是图像的中心,然后完全缩小,我的图像关闭中央;更重要的是,由于我在那时处于最小缩放比例,我无法平移以重新定位我的图像。

我的期望是,当缩小时,UIScrollView会将contentSize的区域重新定位在其边界之下,这样您就不会看到超出内容视图的边缘(或者更确切地说,内容视图的大小加上contentInset)。这个假设我错了吗?

如果是这样,我该怎么做才能提供这种行为?

这是我的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    imageView.image = image;
    [imageView sizeToFit];

    float minimumScale = [imageScrollView frame].size.width  / [imageView frame].size.width;

    imageScrollView.contentSize = [imageView frame].size;    
    imageScrollView.maximumZoomScale = 2.0;
    imageScrollView.minimumZoomScale = minimumScale;

    imageScrollView.zoomScale = imageScrollView.minimumZoomScale;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return imageView;
}

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale
{
    // nothing
}

编辑:解决方案!

您必须在UIScrollView上设置clipsToBounds = YES才能获得所需的行为。我最初没有找到它,因为它是UIView的属性,而不是UIScrollView的属性。

1 个答案:

答案 0 :(得分:1)

我在UIImageView上看到同样的捏合,在IB中,我检查了“剪辑子视图”,图像视图开始表现得更好。