如何缩放 UIImage 以适应 UIScrollView 的尺寸?

Posted

技术标签:

【中文标题】如何缩放 UIImage 以适应 UIScrollView 的尺寸?【英文标题】:How to scale UIImage to fit dimensions of UIScrollView? 【发布时间】:2016-05-12 09:18:46 【问题描述】:

我有一个尺寸为 300x600(高 x 宽)的 UIImage。 UIImage的相对层次是这样的:

使用 AutoLayout,我为 UIImageView、UIScrollView 和 UIVIew 设置了以下约束:

我已将 TableView 的相对高度尺寸设置如下:

// Setting Last Row to height = 70 pixels and first row to fill balance of screen:
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
    if indexPath.row == 1  return 70 
    else  return tableView.frame.size.height - 70 

我想要 UIImage 的 height 与它所在的 UISCrollView 的高度完全匹配。我不关心 UIImage 的最终宽度,但希望遵循“AspectFit”的范围。所以我可能会雇用

imageView.contentMode = UIViewContentMode.ScaleAspectFit

...可能在

override func viewDidLayoutSubviews() 
    super.viewDidLayoutSubviews()

我会设置UIScrollView的动态高度和宽度参数,然后设置UIImage高度跟随UISCrollView的高度,让ScaleAspectFit自动处理宽度。

我尝试了各种代码版本来实现这一点,但都未能达到预期的效果。

问题:我走对了吗?任何人都可以让我开始使用一些框架代码,以便我可以根据需要对其进行自定义。

旁注:我只允许我的应用使用纵向模式。没有风景。

非常感谢您的关注和时间;)

【问题讨论】:

不知道我是否理解正确,我将创建一个容器UIView 来保存确切的UIScrollView然后我可以创建滚动视图子UIImageView 的约束到容器视图的,即相等的高度。 这些约束是给他们的父母的,我想像UIView UIScrollView UIImageView 但尝试约束为UIView UIImageView跨度> 嗨。伟大的想法。我添加了等高约束(从子UIImageView 到容器UIView),并且还将IB 中UIImageView 的视图-> 模式更改为“Aspect Fill”。现在高度完美了,但是宽度缩短到UIImageView的左右。 'AspectFill' 裁剪您的图像以适合图像视图,此链接可能有助于理解并找到解决方案http://blogs.innovationm.com/image-handling-in-ios/ 尤里卡!!我在 IB 中为子 UIImageView 的约束选择了“纵横比”,现在图像 (UIImageView) 已完美缩放! 【参考方案1】:

我会创建一个容器 UIView 来保存确切的 UIScrollView 然后我可以创建滚动视图的子视图 UIImageView 到容器视图的约束,即相等的高度。

我想,这些限制对他们的父母来说就像

UIView <--> UIScrollView <--> UIImageView 

但试试看

UIView <--> UIImageView

【讨论】:

以上是关于如何缩放 UIImage 以适应 UIScrollView 的尺寸?的主要内容,如果未能解决你的问题,请参考以下文章

矩形图像缩放以适应正方形以与 MPMediaItemArtwork 一起使用

为 UIImageView 手动缩放 UIImage

如何在 swift 中将 UIImage 中的 PDF 放入 PDFView 中?

代号一:如何缩放图像以适应屏幕宽度?

在方向更改时自动缩放 UIView 以按比例缩放以适合父视图

自动缩放 TextView 文本以适应范围 - 如何调用?