UIScrollView的最大缩放比例

时间:2012-12-30 14:13:49

标签: objective-c ios uiscrollview

基于Large Image Downsizing iOS sample code,我正在尝试为我的UIScrollView设置最大缩放比例,以便不会有太大的图像。

据我所知,UIScrollView的maximumZoomScale本机属性引用了zoomScale属性,以便授权缩放或不缩放。但是,在此示例代码中,使用自定义float imageScale管理图像的比例,并且UIScrollView的zoomScale属性始终为1.

在此示例代码中,我看到使用此方法管理最大缩放比例:

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale {
    imageScale *=scale;
    if( imageScale < maximumScale ) imageScale = minimumScale; // THIS IS THE LINE WHO AVOID TO ZOOM TOO MUCH BUT IT MAKES A REALLY UGLY BEHAVIOUR

    CGRect imageRect = CGRectMake(0.0f,0.0f,CGImageGetWidth(image.CGImage) * imageScale,CGImageGetHeight(image.CGImage) * imageScale);
    // Create a new TiledImageView based on new frame and scaling.
    frontTiledView = [[TiledImageView alloc] initWithFrame:imageRect image:image scale:imageScale]; 
    [self addSubview:frontTiledView];
    [frontTiledView release];
}

所以我希望找到一个与UIScrollView本机行为相同的解决方案。 每当我在代码中更改时,我都尝试将zoomScale设置为imageScale的值,但它会对图像产生奇怪的行为,因此我无法使用此方法。

所以,我的问题是:

  • 有没有办法告诉UIScrollView它必须将imageScale作为zoomScale值? (可能会覆盖原生方法)
  • 还有另一种方法可以将比例限制为最大值吗?
  • 有没有办法定义最大尺寸而不是最大尺度?

非常感谢!

1 个答案:

答案 0 :(得分:2)

我想我的方式很好!这段代码解决了我的问题!

if (imageScale > delegateAppli.params.zoomLevelAuthorized) self.maximumZoomScale = 1.0;
else self.maximumZoomScale = 1 + delegateAppli.params.zoomLevelAuthorized - imageScale;

希望我的回答能帮助其他人......