我有一个自定义的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的属性。
答案 0 :(得分:1)
我在UIImageView上看到同样的捏合,在IB中,我检查了“剪辑子视图”,图像视图开始表现得更好。