gpt4 book ai didi

ios - 如何以编程方式在 uiview 上调整图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:54:43 26 4
gpt4 key购买 nike

我以编程方式在 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];

最佳答案

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com