可以实现 UIScrollView 与可缩放和方面适合的内容?

Posted

技术标签:

【中文标题】可以实现 UIScrollView 与可缩放和方面适合的内容?【英文标题】:Possible to implement UIScrollView with zoomable, and aspect fit content? 【发布时间】:2012-05-09 00:47:53 【问题描述】:

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

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

-可以放大图片,

-如果你旋转设备放大(横向),图像保持在中间,

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

所以我需要同时满足宽高比和缩放功能。

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

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

【问题讨论】:

你有没有得到答案,我想我也有同样的问题 【参考方案1】:

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

【讨论】:

我不想使图像居中,我只想保持缩放部分居中。但主要的一点是要保持外观合适,这意味着当用户转动设备时内容的比例会发生变化。只需查看照片应用即可。

以上是关于可以实现 UIScrollView 与可缩放和方面适合的内容?的主要内容,如果未能解决你的问题,请参考以下文章

围绕其中心旋转可缩放和翻译的 SVG 元素

易于使用的可缩放和可平移的 GUI? [关闭]

iOS7 自动布局与 Tabbar 结合 UIScrollView 和可缩放 UIImageView 不起作用

如何使用 UIScrollView 和 CATiledLayer 在可缩放的 UIView 上绘制标记

缩放UIScrollview可缩放后如何调整UILabel文本的大小

使 UICollectionView 可缩放?