可以使用zoomable和aspect适合内容实现UIScrollView吗?

时间:2012-05-09 00:47:54

标签: iphone uiscrollview zooming layoutsubviews

我想创建一个与您在Photo应用程序中平移/缩放图像完全相同的scrollView:

- 横向图像在纵向屏幕上适合宽高比,

- 您可以放大图像,

- 如果您旋转设备缩放(横向),图像将保留在中间,

- 当您缩放时,图像仍然适合新的横向屏幕(拉伸全屏)。

所以我需要一次适合宽高比和缩放功能。

我已经实现了一个解决方案,我在layouSubviews中“手动”布局scrollView的内容以使方面适合,但这会扰乱缩放行为。

有一种巧妙的UIKit方式来处理这个问题吗? 或者我必须在这里创建自己的实现?

1 个答案:

答案 0 :(得分:0)

您需要启用缩放(并设置最小和最大缩放比例),然后实现scrollViewDidZoom。这里有一些示例代码可以帮助您开始处理图像居中。你可以调整它来做其他部分:

- (void)scrollViewDidZoom:(UIScrollView *)scrollView 
{
    CGSize boundsSize = scrollView.bounds.size;
    CGRect frameToCenter = imageView.frame;

    // center horizontally
    if (frameToCenter.size.width < boundsSize.width)
        frameToCenter.origin.x = (boundsSize.width - frameToCenter.size.width) / 2;
    else
        frameToCenter.origin.x = 0;

    // center vertically
    if (frameToCenter.size.height < boundsSize.height)
        frameToCenter.origin.y = (boundsSize.height - frameToCenter.size.height) / 2;
    else
        frameToCenter.origin.y = 0;

    imageView.frame = frameToCenter;
}

注意:此代码假定您在UIScrollView中保留对UIImageView(在此示例中为imageView)的引用。