2

我想创建一个滚动视图,其工作方式与您在照片应用中平移/缩放图像完全一样:

- 横向图像适合纵向屏幕,

- 您可以放大图像,

- 如果您旋转设备放大(横向),图像仍然在中间,

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

因此,我需要同时满足宽高比和缩放功能。

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

有没有一种简洁的 UIKit 方法来处理这个问题?或者我必须在这里创建自己的实现?

4

1 回答 1

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)的引用。

于 2012-05-09T00:58:24.913 回答