如何缩放 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 一起使用
如何在 swift 中将 UIImage 中的 PDF 放入 PDFView 中?