Ios 缩小放置在UIScrollView中的UIImageView

Ios 缩小放置在UIScrollView中的UIImageView,ios,iphone,uiscrollview,uiimageview,scale,Ios,Iphone,Uiscrollview,Uiimageview,Scale,我在Xcode 5中创建了一个包含UIImageView的uicrollView(此处): 由于我已在Interface Builder中设置了所有UI属性(要显示的图像、1000 x 1000像素的UIImageView尺寸和UIImageView模式设置为“按比例填充”),因此中的实际源代码非常短: - (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; /* if (UI_USER_INTER

我在Xcode 5中创建了一个包含
UIImageView
uicrollView
(此处):

由于我已在Interface Builder中设置了所有UI属性(要显示的图像、1000 x 1000像素的
UIImageView
尺寸和
UIImageView
模式设置为“按比例填充”),因此中的实际源代码非常短:

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];

    /*
    if (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad) {
        _imageView.frame = CGRectMake(_imageView.frame.origin.x,
                                      _imageView.frame.origin.y,
                                      800, 800);
    }
    */

    _scrollView.contentSize = _imageView.bounds.size;

    NSLog(@"%s: _scrollView %@ %@",
          __PRETTY_FUNCTION__,
          NSStringFromCGPoint(_scrollView.frame.origin),
          NSStringFromCGSize(_scrollView.frame.size));

    NSLog(@"%s: _imageView %@ %@",
          __PRETTY_FUNCTION__,
          NSStringFromCGPoint(_imageView.frame.origin),
          NSStringFromCGSize(_imageView.frame.size));
}
令人惊讶的是(对于我这个iOS新手来说)它在iPhone和iPad上运行得很好,而且这个应用甚至可以旋转

但是,iPhone显示的图像有点太大,需要缩小比例才能更舒适地播放:

我希望,既然
UIImageView
模式是“按比例填充”,我只需要更改它的
帧(或
边界
?我已经尝试了这两种方法)-如上面显示的注释代码所示

但这不起作用-滚动中断(无法再滚动到图像底部)

有什么建议吗

(我还希望以后添加一个捏和双击手势识别器,并在其中缩放
UIImageView

更新:

我已尝试按照Andrei的建议(谢谢!)将以下代码添加到
viewDidLayoutSubviews
,但图像并未缩小:

if (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad) {
    _scrollView.maximumZoomScale = 1.2;
    _scrollView.minimumZoomScale = .8;
    _scrollView.zoomScale = .8;
}

UIScrollView可以为您处理缩放以及捏手势

您只需要在“minimumZoomScale”和“maximumZoomScale”属性中设置适当的值,它将允许用户在这些限制之间切换。 您还需要实现

- (UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView
方法从UIScrollViewDelegate。它应该只返回imageView

还可以使用“zoomScale”属性设置缩放级别

对于双击,您需要将自己的双击手势识别器添加到scrollview,并在双击时增加缩放级别


使用委托方法和双击手势更新了

您必须明确阅读有关自动布局的内容。如果启用“自动布局”,则无法更改帧和边界。当然,你可以在整个情节提要中关闭它

问题的解决方案是约束。通过约束,您可以定义视图的关联方式,例如:
UIScrollView
与其父视图的关联方式,
UIImageView
UIScrollView
的关联方式

阅读以下链接上的约束的更多信息:

虽然
UIScrollView
可以为您处理带收缩的缩放,但您必须实现正确的委托方法:
viewForZoomingInScrollView:
。当然,您必须为
minimumZoomScale
maximumZoomScale
设置正确的属性值

有关以下链接的更多信息:


这两个网站都有足够的信息和例子让你能够做到这一点。首先对这些网站上的代码进行实验,然后如果遇到问题,再发布另一个更具体的问题。

+1谢谢,但是当我设置
\u scrollView.zoomScale=.8
(请查看更新的问题)。是的,我的错,正如Legoless所说的,您还需要实现-(UIView*)viewForZoomingInScrollView:(UIScrollView*)来自UIScrollViewDelegate的scrollView{方法。它应该只返回imageView。我还更新了答案。