使用 CGAffineTransform 使用 UIViewContentModeTop 缩放 UIImageView

Posted

技术标签:

【中文标题】使用 CGAffineTransform 使用 UIViewContentModeTop 缩放 UIImageView【英文标题】:Scaling an UIImageView with UIViewContentModeTop using CGAffineTransform 【发布时间】:2013-08-27 11:20:35 【问题描述】:

在维护 UIImageView 的 contentMode 时应用多个转换时遇到问题。

我已经用contentMode = UIViewContentModeTop 定义了一个 UIImageView。我的意图是应用比例变换不应该使图像倾斜,而是保持图像的顶部可见。

不幸的是,设置变换后,图像仍然倾斜:

_imageView.transform = CGAffineTransformMakeScale(1.0, 0.5);

据我了解,这应该将图像缩放到一半高度,有效地剪裁图像的底部,但是如前所述,UIImageView 似乎使用了UIViewContentModeScaleToFill,从而使图像倾斜。

我使用变换而不只是帧操作的原因是我还想对视图应用旋转。

我还在图层上设置了一个自定义锚点可能是相关的:

_imageView.layer.anchorPoint = (CGPoint)0.2, 0.06;

【问题讨论】:

【参考方案1】:

我通过不使用变换进行缩放来解决此问题,而是修改边界矩形,这在进行变换时是允许的。使用边界矩形修改大小,正确使用我在视图上设置的内容模式。

【讨论】:

以上是关于使用 CGAffineTransform 使用 UIViewContentModeTop 缩放 UIImageView的主要内容,如果未能解决你的问题,请参考以下文章

使用 CGAffineTransform 使用 UIViewContentModeTop 缩放 UIImageView

我如何使用 CGAffineTransform 进行正确的拖放

iOS形变之CGAffineTransform

CGAffineTransform介绍

iOS 混合变换旋转 CGAffineTransform 的使用

使用 CGAffineTransform 旋转后更新 UIImageView 框架时出现奇怪的挤压