iPhone 中的 jpg 图像和 2x 图像

2024-04-02

我正在开发 iphone 应用程序并定位iOS 4.0或稍后。我正在尝试将图像添加到 UIImageView,并且图像位于jpeg格式。这就是我到目前为止所做的..

UIImageView *bgImageView            =   [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 246.0)];
bgImageView.image                   =   [UIImage imageNamed:@"background"];
[self.view addSubview:bgImageView];
[bgImageView release];

我添加了两张图片,

  1. background.jpg(正常 1x 图像)
  2. [电子邮件受保护] /cdn-cgi/l/email-protection(对于 2x/视网膜 展示)。

但是当我构建并运行时,除了没有背景之外,一切都运行良好。我的所有其他小部件都在那里,但有白色背景并且图像未显示。

接下来,我为背景创建了两个 png 图像,将其添加到项目中并运行。这次我的背景被展示了。我很困惑,因为根据文档 http://developer.apple.com/library/ios/#documentation/uikit/reference/UIImage_Class/Reference/Reference.htmljpg 图像可以在 iphone 中通过 UIImage 使用。

我再次尝试使用我的 jpg 图像并将上面的代码更改为这样

UIImageView *bgImageView            =   [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 246.0)];
bgImageView.image                   =   [UIImage imageNamed:@"background.jpg"]; //added extension
[self.view addSubview:bgImageView];
[bgImageView release];

当我运行上面的代码时,显示背景图像,但未加载 2x 图像。这表明我的 jpg 图像没有问题,而且它不是罪魁祸首。因此,当我只提供不带扩展名的图像名称时,png 文件(1x 和 2x)会加载到相应的设备上,而 jpg 文件根本不会加载。 看起来像一个错误(在 sdk 或文档中)。 iOS 4 即将迎来美好的一年。为什么没有人注意到它?除了将所有图像转换为 png 之外,我还有其他选择吗?

EDIT :

好吧,问题两天了,答案为零。我已经将所有图像转换为 png,并且我的项目的该部分已完成(因为我的项目等不及了..)。尽管如此,为了我自己,也为了将来遇到这个问题的每个人,我想更多地了解这个问题。至少有人可以确认这确实是苹果的一个bug。我开始悬赏,以便更多人可以看到这个帖子。

再次编辑

距离本次赏金结束还有 2 天。感谢所有回复的人。但让我澄清一件事。我已经说过我已经将所有图像转换为 png 并且继续前进。我只是想确认一下imageNamed以相同方式处理 jpg 和 png 文件。文档当然说它会(除非苹果在其他地方写过它)UIImage文档)。如果文档正确,那么我的代码因两个可能的原因而失败

  1. 这是一个错误 imageNamed。如果这是原因,那么除了提交错误报告、将图像更改为 png 或编写包装器(就像 Chandan 在他的回答中所说)并继续前进之外,我没有太多选择。
  2. 我使用的 jpeg 图像有问题。好吧,我不是一个 Photoshop 爱好者。但我用过 RGBA jpg 图像。如果图像很重要,我准备询问我的设计师 朋友并提供更多信息。

还有一件事。This http://www.oogtech.org/content/tag/imagenamed/帖子也只是讲述了这个问题。但他不知道背后的原因。所以我并不孤单。

编辑:结束

嗯,这与图像本身有关。我用谷歌搜索并下载了一些示例 jpeg 图像并使用它。其中一些显示正确,有些则不正确。由于边界时间已到,我将边界交给 PengOne,PengOne 尝试重现该错误并成功加载没有扩展名的 jpg 图像,从而使我能够处理更多图像。感谢所有试图提供帮助的人。


根据UIImage类参考:

讨论

此方法在系统缓存中查找图像对象 指定名称并返回该对象(如果存在)。如果有匹配的 图像对象尚未在缓存中,此方法加载图像 来自指定文件的数据,缓存它,然后返回 结果对象。

在运行 iOS 4 或更高版本的设备上,如果 设备屏幕的比例为 1.0。如果屏幕比例为2.0, 该方法首先搜索具有相同文件名的图像文件 附加一个 @2x 后缀。例如,如果文件的名称是 按钮,它首先搜索button@2x。如果找到 2x,则会加载 该图像并设置返回的 UIImage 对象的缩放属性 到 2.0。否则,它加载未修改的文件名并设置比例 属性为1.0。有关更多信息,请参阅 iOS 应用程序编程指南 有关支持具有不同比例因子的图像的信息。特别的

注意事项

在 iOS 4 及更高版本上,不需要指定文件名 文件扩展名。在 iOS 4 之前,您必须指定文件名 扩大。

由于您的目标是 iOS 4.0 及更高版本,因此您应该not需要文件扩展名。我尝试重现这个潜在的错误,但它在没有文件扩展名的情况下按预期工作。

以下是一些关于在您的应用中创建此效果时可能出现的问题的一些想法:

  1. 如果您在某个时刻更改了图像,则问题可能来自缓存。

  2. 如果您选择不使用文件扩展名,并且有“background.jpg”和“background.png”作为选项,则首选似乎是使用“.png”文件。

  3. 如果您在首次运行应用程序后将目标设置为 iOS 4.0 及更高版本,则需要文件扩展名,并且图像可能已缓存为空白,这又回到了理论 1。

这是我能做的最好的事情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iPhone 中的 jpg 图像和 2x 图像 的相关文章

  • 如何使用 Javascript 从 Chrome iOS 下载 blob 文件?

    如何使用 Javascript 从 Chrome iOS 下载 blob 文件 我正在从 iOS 下载文件 pdf excel txt png iOS 没有文件系统 这对下载来说是一个问题 我创建了一个代码 根据操作系统和导航器 如果需要
  • iPhone签名捕捉

    是否可以通过电缆 USB 连接将签名从 iPhone 传输到 xls 文件 因此 这可能不完全是您正在寻找的内容 但这就是我捕获用户 用手指 手写笔 绘制的签名的方式 您的 UIImageView 将具有绘制的签名 我没有考虑过如何将签名图
  • 将对象映射到 TableView 部分的 Swift 二维数组

    我想不出更好的方法来做到这一点 我将学生对象的所有属性映射到二维数组中 所以我的电视有几个部分 我也不能使用静态表视图 如果是这样 这个问题就不会存在 所以我在 TVC 中的代码 let currentUser PFUser current
  • 对 Objective-c 对象数组进行排序

    所以我有一个自定义课程Foo有许多成员 interface Foo NSObject NSString title BOOL taken NSDate dateCreated 在另一堂课上我有一个NSMutableArray包含这些对象的列
  • 嵌套 UIStackViews 打破约束

    我有一个复杂的视图层次结构 在 Interface Builder 中内置 带有嵌套的 UIStackViews 每次我隐藏一些内部堆栈视图时 我都会收到 无法满足的约束 通知 我已经追踪到这一点
  • 数组扩展以按值删除对象

    extension Array func removeObject
  • 为什么分割视图控制器必须始终是您创建的任何界面的根?

    在苹果的开发者指南中 他们指出 分割视图控制器必须始终是您创建的任何界面的根 see here http developer apple com library ios featuredarticles ViewControllerPGfo
  • 在 Objective-C 中比较两次的最好/最简单的方法是什么?

    我有一个时间的字符串表示形式 例如 11 13 AM 这是使用 NSDateFormatter 和 stringFromDate 方法生成的 我想将此时间与当前时间进行比较 但是当我使用 dateFromString 方法将字符串转回日期时
  • UICollectionView 装饰和补充视图无法移动

    In UICollectionView装饰和补充意见似乎是一个很大的谜团 目前似乎几乎没有示例代码 我设法让这两种类型在自定义布局中工作 请参阅此post https stackoverflow com questions 12810628
  • Xcode 8.2 更新后二进制文件无效

    我今天尝试在更新到 Xcode 8 2 后向我的应用程序推送更新 但收到无效的二进制错误 我以前从未见过这个 我的应用程序的 iOS 部署目标是 iOS 9 0 有谁见过这个错误或知道如何修复它 这是电子邮件的内容 解释了二进制文件的无效内
  • 检索旋转的 UIImageView 的所有 4 个坐标

    如何获取 UIImageView 的 4 个坐标 我知道可以得到CGRect以及origin x和origin y 但是如何找到所有4个角呢 编辑 我正在旋转 UIImageViews 这就是我问的原因 P 您可以添加矩形的宽度和高度来获取
  • 如何使用CAAnimation制作曲线/圆弧动画?

    我有一个用户界面 其中一个项目被删除 我想模仿 iOS 邮件中的 移动到文件夹 效果 小字母图标被 扔 到文件夹中的效果 我的会被扔进垃圾箱 我尝试使用它来实现它CAAnimation在图层上 据我在文档中阅读 我应该能够设置byValue
  • 当设备方向改变时以编程方式更新约束的正确方法?

    我在用着storyboard and autolayout 并将 IB 中的约束设置为IBOutlet在相应的视图控制器中 我正在阅读几篇关于如何将纵向和横向的约束更新为不同的帖子 但我仍然不确定应该如何执行此操作 我应该设置新的限制吗 v
  • 如何在 iOS 中通过 wifi 传输大文件

    我下载了WiTap http developer apple com library ios samplecode WiTap Introduction Intro html代码来自苹果网站 它用于通过本地 WiFi 网络传输数据 我正在从
  • 允许在 Safari 上聊天应用程序使用 audio.play()

    由于苹果禁用了自动播放音频的功能HTMLMedia Element play https developer mozilla org en US docs Web API HTMLMediaElement play在没有用户交互的 java
  • 检测 UITableViewCell 何时离开屏幕

    我正在实施一个丰富的UITableView与定制创建UITableViewCell 我以一种方式在屏幕上显示这些 但是一旦它们离开屏幕 我想记下这一点 因为它们第二次出现时我希望它们以不同的方式显示 认为离开屏幕时自动 标记为已读 我一直在
  • 呈现 UIActivityViewController 时发出警告

    当我提出一个UIActivityController使用我得到的下面的代码 它被呈现 但控制台显示 Warning Attempt to present
  • 如何制作全局数组?

    所以 我读了这个帖子 https stackoverflow com questions 1249131 declaring global variables in iphone project 这几乎正是我正在寻找的东西 然而 这不起作用
  • 从另一个选项卡重新加载 UITableView

    我在尝试重新加载时遇到问题UITableView从 XML 源加载的单元格数据 这是场景 应用程序包含选项卡 其中一个选项卡中有一个表格视图 它从 XML 文件获取数据并且工作正常 但问题是当我想要更改提要类别并从另一个选项卡更改 XML
  • iOS 13 UIActivityViewController 在图像保存后自动呈现以前的 VC

    我正在尝试实现 将图像保存到库 功能 然后返回到当前视图控制器 但在新的 iOS 13 上 它会返回到呈现当前视图控制器的视图控制器 PHPhotoLibrary requestAuthorization status PHAuthoriz

随机推荐

  • WebGrid 的标头格式

    我刚刚读到 http www mikesdotnetting com Article 154 Looking At The WebMatrix WebGrid http www mikesdotnetting com Article 154
  • CFUUID 对比广告标识符对比供应商标识符

    我很困惑应该使用什么来唯一标识我的用户 我也想支持 iOS 7 但我不明白其中的区别 我目前正在使用此代码片段生成 UUID CFUUIDRef udid CFUUIDCreate NULL NSString createdUUID NSS
  • HTML5 中是否可以有多个 data-{name} 属性?

    有没有办法从这个元素获取所有 3 个数据值 div 这对于我正在启动的项目非常有用 这样我就可以加载所需的 js 模块并将它们链接到 dom 我知道这可能听起来很奇怪 但我正在尝试一些新的东西 您的问题的答案是 HTML 不支持同一属性的多
  • 三柱布局 侧柱弹性中间固定

    我想知道是否有人知道如何使居中 div 具有固定宽度 并在居中 div 的两侧具有右侧和左侧 div 弹性 居中的 div 也具有 min width 和 max width css 属性 尝试添加您在发布问题时尝试过的代码 HTML di
  • SignalR 跨域不适用于 IE10 以外的浏览器

    我正在使用 SignalR 跨域通信编写一个网络应用程序 我正在使用最新版本的 SignalR 1 0 1 以下是 jQuery 的文档就绪事件中的代码 var connection hubConnection url var proxy
  • 如何在实时添加对象时从 Redis 中弹出对象?

    我想让 Node js 进程运行 因为它正在检查 Redis 服务器是否有任何新的弹出内容 另一个进程将偶尔进行推送 而 Node 进程将尝试弹出任何进来的内容 Node 进程将保持运行 有人能给我指出一个好的方向吗 我正在尝试找出如何监听
  • 在 C 中访问嵌套结构中的项目

    我尝试访问另一个结构中的 下一个 但失败了 尽管我尝试了很多方法 这是嵌套结构 struct list head struct list head next prev typedef struct char key char value s
  • 从 django 中的 url 获取应用程序名称

    我知道如何在 django 中使用 url 解析来获取 url 名称 我想以类似的方式处理来自某个应用程序的所有请求 所以我想我可以通过从 url 获取应用程序名称来做到这一点 我怎样才能做到这一点 路径你会很头痛 因为你必须应用很多分割
  • [ valueForUndefinedKey:]:此类对于键 AppointmentDate 不符合键值编码。 - 迅速

    我想对对象数组进行排序 下面是我对对象数组进行排序的函数 class func Fn SortByParameter arrayToSort NSMutableArray paramName NSString isAscending Boo
  • 四舍五入到 0.5

    我有一个结果 1 444444 我想将此结果舍入为 1 5 这是我使用的代码 a text String round 13000 9000 0 但这是四舍五入到 1 0 我需要四舍五入到 1 5 和这段代码 a text String ce
  • 属性。有什么有用的目的?

    Under System Runtime InteropServices the
  • Vim 显示:ImportError:没有名为 site 的模块。当我使用 Canopy1.1 时

    我在Windows Xp 32中安装了Canopy 1 1 express 并使用vim作为编辑器 当我打字时 python print hello 在vim命令行中显示 Importerror No module named site然后
  • Flutter Android SDK 版本 28 错误,但我使用的是 30

    当我创建一个新的 flutter 应用程序时 它启动 android sdk 版本 28 但我使用 android sdk 30 Flutter doctor 还显示了平台 android 30 build tools 30 0 2 当我尝
  • dll文件的描述

    您好 如何在 dll 文件中查找类的描述 在我的项目中 我在 imagealg dll 中使用 diff calss 告诉我如何找到那个的描述 plz 找到该类的描述的最佳位置是在文档中
  • Eclipse 自动建议并填写变量名称

    好的 所以我的问题是当我创建一个变量时 例如 Object o 当我输入 o 时 它会建议类似 object 的内容 没关系 但是当我按空格时 它会自动填充新名称 基本上我不想关闭自动完成 我只想禁用空格自动填充建议 甚至禁用变量命名建议也
  • 如何使用 C# 在 Excel 图表上添加多个系列

    我想添加一个如下图所示的图表 该图表有 3 个系列 黑色 红色 蓝色 以下是在图表上创建 一个 系列的代码块 Excel Workbook oWorkbook Excel Workbook oSheet Parent Excel Chart
  • 捕获最后一个 WM_SIZE

    当我调整窗口大小时 我想告诉程序的另一部分我的窗口大小已更改 我继续读下去MSDN http msdn microsoft com en us library ms632646 VS 85 aspx that WM 尺寸 留言WM SIZE
  • 将 less-plugin-glob 与 Webpack 结合使用

    我正在尝试将现有项目的构建系统从gulp to webpack 它当前有一个入口点 less 文件 可导入各种其他文件 如下所示 import bower components bootstrap less bootstrap less i
  • 即使在索引字段上,MongoDB 排序也非常慢

    今天我遇到了这个问题 我的 MongoDB 查询速度非常慢并且超时 我发布了这个问题 MongoDB 记录太多 https stackoverflow com questions 11701103 mongodb too many reco
  • iPhone 中的 jpg 图像和 2x 图像

    我正在开发 iphone 应用程序并定位iOS 4 0或稍后 我正在尝试将图像添加到 UIImageView 并且图像位于jpeg格式 这就是我到目前为止所做的 UIImageView bgImageView UIImageView all