OGeek|极客世界-中国程序员成长平台

标题: ios - 如何以编程方式将图像适合uiview [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 13:19
标题: ios - 如何以编程方式将图像适合uiview

我以编程方式在 View Controller 上添加了一个 uiview 作为 subview (称为 contentView)。我还以编程方式在该 uiview 上添加了图像。每次我在 iPad 上运行应用程序时,图像都会被拉伸(stretch)!如何修复图像以使其适合 iPad 屏幕但不拉伸(stretch)图像?我知道 drawInRect 是拉伸(stretch)图像的原因。那么我该如何解决呢?

这是我的代码:

UIGraphicsBeginImageContextWithOptions(self.contentView.bounds.size, self.contentView.opaque, 0.0);

[[UIImage imageNamed"menu image 2.JPG"] drawInRect:self.contentView.bounds];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();  

UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

[self.contentView addSubview:imageView];



Best Answer-推荐答案


UIImageView 有一个名为 contentMode 的属性。它决定了如何在 View 上下文中处理图像布局。 contentMode 的类型为 UIViewContentMode .

默认值是UIViewContentModeScaleToFill,它在不考虑纵横比的情况下拉伸(stretch)图像。我假设这是导致问题的变化的纵横比。

如果您希望缩放图像,但保持宽高比,您有两种选择:

  1. UIViewContentModeScaleAspectFit:这将显示缩放以填充 View 的图像,但不会剪切任何内容(如果纵横比与 View 大小不匹配,它将显示水平或垂直乐队)

  2. UIViewContentModeScaleAspectFill:这将缩放图像以完全填充 View ,没有任何 strip - 如果图像比例与 View 比例不匹配,这将导致内容被剪裁。

要在 Objective-C 中的 ImageView 上设置 contentMode,请使用以下语法:

UIImage *image = [UIImage imageNamed"menu image 2.JPG"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.contentMode = UIViewContentModeScaleAspectFill;
...

您应该不再需要使用自定义上下文绘图来使其工作(感谢 Losiowaty 向我询问此问题)。

关于ios - 如何以编程方式将图像适合uiview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43431464/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4