• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 如何以编程方式将图像适合uiview

[复制链接]
菜鸟教程小白 发表于 2022-12-12 13:19:14 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap