可以使用可缩放和方面拟合的内容实现UIScrollView



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

-横向图像是适合纵向屏幕的方面,

-您可以放大图像,

-如果您旋转设备缩放(横向),图像仍位于中间,

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

)。

所以我需要宽高比拟合,并同时缩放功能。

我已经实现了一个解决方案,我在layouSubviews中"手动"布局滚动视图的内容以使其适合外观,但这会干扰缩放行为。

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

您需要启用缩放(并设置最小和最大缩放比例),然后实现 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)的引用。

最新更新