我正在try 用UIImageView以固定大小(UIImageViewxUIImageView)绘制一些缩略图.我已将图像视图的帧大小设置为UIImageViewxUIImageView,并将contentMode设置为UIViewContentModeScaleAspectFill.

我的理解是,这将导致图像以我设置的大小绘制,图像将填充图像区域,并剪裁图像中超出我为图像视图设置的大小的任何部分.然而,图像仍然比我为其设置的100x100大小大或小.

如果我将contentMode设置为UIviewContentModeScaleToFill,那么图像将精确地绘制为contentModexcontentMode,但它会被扭曲以适应这些尺寸.你知道为什么aspect fill没有按预期剪裁吗?

以下是我的代码:

_photoView = [[UIImageView alloc] initWithImage:photoImage];
_photoView.contentMode = UIViewContentModeScaleAspectFill;
[self addSubview:_photoView];

CGRect photoFrame = _photoView.frame;
photoFrame.size = CGSizeMake(100, 100);
_photoView.frame = photoFrame;

为了更好地说明这一点,这里有一个我看到的屏幕截图.绿色方块是包含我正在使用的UIImageViewUIView.我已经将它们的背景色设置为绿色,视图的边框设置为UIViewxUIView.作为测试,UIImageViews的尺寸为50x50.正如你所看到的,当使用...AspectFill时,图像的大小不是50x50,在某些情况下会偏离我想要的位置.使用...ScaleToFill时,尺寸正确,但图像失真.

说明问题的屏幕快照

推荐答案

您可以try 将剪辑设置为边界吗

[_photoview setClipsToBounds:YES];

或者直接在故事板/Xib中,如果可以:

enter image description here

Ios相关问答推荐

滑动以返回特定的 SwiftUI 视图

如何在 Swift 中从另一个视图控制器将元素附加到数组中

Flutter:无法构建 iOS 应用程序“ARCHIVE FAILED”,为设备归档时遇到错误

CocoaPods 找不到 pod“Firebase/CoreOnly”的兼容版本

NavigationLink 只能使用一次

iPhone UIButton - 图像位置

iOS SwiftUI:以编程方式弹出或关闭视图

在 SwiftUI 中使 VStack 填充屏幕的宽度

如何在react 导航中获取当前路由名称?

Xcode 10.2.1 命令 PhaseScriptExecution 失败,退出代码为非零

6.5" 显示器的应用store 屏幕截图大小是多少?

如何在基于导航的应用程序中更改推送和弹出动画

UIView 中的 safeAreaInsets 在 iPhone X 上为 0

获取安全区域插图顶部和底部高度

将深层链接传递到 iOS 模拟器?

如何从本地 cocoapods 缓存中清除或清理特定的 pod

光标外的 iOS 11 Safari bootstrap 模式文本区域

Xcode 9 Swift 语言版本 (SWIFT_VERSION)

如何确定 WKWebView 的内容大小?

所有小部件的Flutter 填充?