可以实现 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 与可缩放和方面适合的内容?的主要内容,如果未能解决你的问题,请参考以下文章
iOS7 自动布局与 Tabbar 结合 UIScrollView 和可缩放 UIImageView 不起作用
如何使用 UIScrollView 和 CATiledLayer 在可缩放的 UIView 上绘制标记