在不缩放 UIImage 的情况下调整 UIImageView 的大小

Resizing UIImageView without scaling UIImage

我有一个显示 UIImageUIImageView,内容模式设置为 UIContentModeScaleAspectFit。图像视图与屏幕一样宽。我想在不改变图像位置和比例的情况下调整图像视图的大小。因此,在调整大小后,UIImage 几乎仍处于相同位置并且实际上仍与屏幕宽度相同,但由于图像视图调整大小而不完全可见。

我尝试使用 UIContentModeLeft,同时从右侧调整大小,以固定 UIImage 位置,但我的图像不像我使用 UIContentModeScaleAspectFit 时那样处于全分辨率。

我对此一窍不通。我可能需要使用 CGImage 或 CIImage,但我不知道从哪里开始。

将要显示的图像设置为视图的背景,而不是源图像。

您可以使用:

yourImageView.background = [UIColor colorWithPatternImage:[UIImage imageNamed:@"nameOfTheImageYouWantToDisplay"]];

我设法解决了我的问题。这是我所做的:

  • 创建一个 UIView 并在其中添加一个 UIImageView 子视图
  • 将图像视图内容模式设置为UIContentModeScaleAspectFit
  • 使用 [[UIScreen mainScreen] bounds]
  • 将图像视图框架定义到屏幕
  • setClipsToBounds = YESUIView

现在,在调整大小时,imageview 不会缩放,因为它的框架被定义为与屏幕一样大,setClipsToBounds:确保我看不到 UIView 之外的图像部分帧.