iPad 将图像显示为大 - 但不应该

Posted

技术标签:

【中文标题】iPad 将图像显示为大 - 但不应该【英文标题】:iPad displays image to big - but shouldn't 【发布时间】:2012-08-30 14:25:54 【问题描述】:

我为 iPad 3 开发应用程序 - 带有 Retina 显示屏。我根据规范计算出该图像应为 1536 x 2008 以填充(带有状态栏)整个屏幕。我将图像大小调整为这样的尺寸,并以编程方式加载它并将其设置为在 UIImageView 上显示(从情节提要加载)。更重要的是,为了获得最佳性能,我将 UIImageView 模式设置为 Center(以避免缩放)。当我运行应用程序时,我只看到图像的中心 - 好像我的图像是屏幕的 4 倍 - 这是不正确的。

我的 viewWillAppear 方法代码

UIImage *image = [UIImage imageWithContentsOfFile: self.pageData.pageFilename];

NSLog(@"Image size: %f %f", [image size].width, [image size].height);

NSLog(@"Image view size: %f %f", self.imageView.frame.size.width, self.imageView.frame.size.height);

[ self.imageView setImage: image];

然后我得到输出:

Image size: 1536.000000 1990.000000
Image view size: 768.000000 1004.000000

如何纠正这个问题?我的图像是 JPG,大小可以看到,DPI 为 72 - 但我确信 DPI 无关紧要

【问题讨论】:

你测试过其他模式吗? (仅用于调试目的)-***.com/questions/1428816/… 的用户也使用了“中心”,其行为与他的情况相同(自下而上)。 UIImage 的大小以像素为单位,UIImageView 的大小以为单位。究竟是什么问题?这两个单位彼此不同。 您的图片的确切名称是什么?你在名字后面加了@2x 吗? @holex:没有。我的图像没有@2x - 因为它会在最终版本中从 Internet 下载。我当时认为@2x 仅适用于捆绑资源。 【参考方案1】:

您正在混淆像素和点。

ios 中,尺寸以点为单位,而不是以像素为单位。如果设备使用视网膜显示,则 1 点 = 2 像素。使用旧显示器,您有 1 点 = 1 像素。


正常显示 1 点 = 1 像素 1024 * 768 点 1024 * 768 像素

视网膜显示屏 1 点 = 2 像素 1024 * 768 点 2048 * 1536 像素


所以在这两种情况下,显示器的大小都相同:1024 * 768 点

【讨论】:

好的,你是对的。然而,如何充分利用 Retina 显示?我的图片接近您给定的尺寸 (1990x1536),因此应该非常适合屏幕。

以上是关于iPad 将图像显示为大 - 但不应该的主要内容,如果未能解决你的问题,请参考以下文章

使用样式化组件将其分配为常量后如何显示背景图像

iPhone 应用程序启动图像未显示在 iPad mini 中

显示 AFNetworking+UIImageView 占位符图像,但不显示 URL 图像

在 iPad 上使用自定义背景图像创建 UIKit 弹出框

在 iPad 上显示潜意识图像

iPad Retina Launch Image -- 仅显示图像的上半部分