iOS - 基于设备的不同图像或缩放相同的图像?

2024-05-11

似乎开发人员总是为不同的设备创建不同的图像资源,并根据设备加载它们。但是,只为最高分辨率的设备 (iPad) 创建图像,然后为 iPhone 6、5 等缩小该图像,有什么缺点吗?

我使用 SpriteKit,因此我只需创建不同大小的 SKSpriteNode,并对它们应用相同的纹理,然后缩放它以适合节点。

我知道性能是需要考虑的因素(为旧设备加载大图像)。但除此之外,还有别的吗?这些图像会显得更加像素化/模糊吗?


完美/纯粹的答案是为每个设备分辨率使用单独的图像和代码。

然而,从您自己的时间和理智的角度来看,考虑到分辨率和屏幕尺寸的数量不会很快减少,使用有限的集合是有意义的。那么为什么要浪费时间准备多个图像呢,除非像 xcode 这样的工具可以让这件事变得更简单。

对于方形或固定纵横比的图像,我认为您只需要一张图像。像背景这样的图像存在一个问题,无论分辨率如何,您都需要至少满足不同的宽高比:因此单独的宽高比图像是必不可少的(例如 3:2 和 16:9),除非您不介意挤压、拉伸或裁剪图像。

如果您发现测试中性能受到影响,您可以稍后添加较低分辨率的图像。

就像素化而言,这是无法避免的。如果您考虑一下从 x3 分辨率变为 x1 分辨率时会发生什么,您就必须将 3x3 像素混合为 1x1。在高分辨率下,任何单像素宽(如线条)或在几个像素上颜色快速变化的物体都会受到最严重的影响。网上有很多关于这方面的文章,你可以看看。

避免像素化的唯一方法是使用矢量图像,但这需要特殊的软件来加载矢量图像并将其渲染到 UIImage 中。

当你缩小时,每张图像都会受到不同的影响。一个想法可能是选择 x2 图像,对于 iPhone 3,将其缩小 1;对于 iPhone 6+,将其放大 1 至 x3。这将覆盖当前大多数原始分辨率的设备,并且可能会提供不太明显的像素化。

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

iOS - 基于设备的不同图像或缩放相同的图像? 的相关文章

  • Monotouch如何管理资源(字符串、图像等)?

    在 Android 中 我将应用程序字符串放入名为的文件中strings xml 例如 对于意大利语翻译 我需要创建一个 value it 文件夹并放入strings xml在此新文件夹中包含带有意大利语标签的文件 Monotouch 如何
  • 线程1:EXC_BAD_ACCESS(代码=1,地址=0xf1759018)

    所以我收到了这个错误 如下图 当我收到此错误时 正在检查我的核心数据库 并根据我收集的电池统计数据对结果进行平均 这一切工作正常 直到我休息了一下然后回来 将其插入并开始出现此错误 我有一个异常断点 但除了图像中的崩溃之外 它仍然没有向我显
  • 将数据追加到 UITableView 的正确方法,swift

    我正在尝试使用两种方式将新数据添加到 UITableView 第一种方式 func insertData appendMessages Message var currentCount self messeges count var ind
  • xcode 9 中的 Facebook 登录按钮终止

    我正在使用 Xcode 9 并将编译器设置为 Swift 3 2 我使用 Cocoapods 安装了 Facebook Login 一切都编译没有任何错误 但每当我在模拟器中运行它时 我单击登录按钮 它就会崩溃 控制台中仅打印以下内容 li
  • iPhone UIWebview:如何强制使用数字键盘?是否可以?

    我正在尝试使用 PhoneGap 来开发一些 iPhone 应用程序 PhoneGap 基本上包装了一个 UIWebView 它运行良好 问题是我的应用程序有几个仅接受数字输入的输入字段 我确实需要强制使用数字键盘 而不是接受默认的标准键盘
  • iOS 从另一个类更新 ViewController UILabel

    我是开发新手 一直在用头撞墙试图弄清楚这一点 我确信 我错过了一些愚蠢的东西 但在尝试了各种不同的解决方案后 我仍然无法得到结果我在寻找 我希望能够从另一个类更新 ViewController 中的 UILabel 这是一个我无法运行的小演
  • Swift:在标签背景中制作图像

    我想将标签放入带有角半径的红色矩形的图像中 条件是图像大小必须等于或略大于标签大小 为此我找到了一个类似的question https stackoverflow com questions 3037902 adding backgroun
  • UITextView自定义自动完成

    有没有办法为 UITextView 实现自定义自动完成 例如给它一个NSDictionary or NSArray需要注意的字符串 你必须自己编程 如果您实现 UITextViewDelegate 协议 则该函数 BOOL textView
  • iOS:适用于 iOS 的基于 Flash 的编程应用程序?

    我想知道 有没有办法支持 iOS 的基于 Flash 的编程应用程序 它可以是本机 混合或网络应用程序 我想知道 是否有可能为 iOS 设备开发基于 Flash 的应用程序 我看过论坛 到处都说这是不可能的 所以只想在开始任何开发之前确认一
  • iPhone 存储图像的最佳方式

    我正在开发一个应用程序 需要缓存一些来自网络的图像 图像可能是 100x100 我只需要知道哪个更好 将图像作为文件存储在 iPhone 文件系统中 将它们作为 blob 与已保存在数据库中的其他数据一起存储在 sqlite 数据库中 感谢
  • iPhone OpenGL ES 工具中的 Tiler Utilization 统计数据意味着什么?

    我一直在尝试执行一些 OpenGL ES 性能优化 以提高 iPhone 应用程序中每秒渲染的三角形数量 但我遇到了困难 我尝试将 OpenGL ES 数据类型从固定点转换为浮点 每苹果的推荐 http developer apple co
  • AVAssetExportSession.requestExportSession 回调从未被调用(swift 3,iOS10)

    以下代码从不调用导出回调 导出会话创建得很好 我没有看到任何错误 也没有任何进展 CPU 为 0 我认为没有例外 状态为 1 进行中 进度为 0 错误为零 视频在画廊中播放 我可以成功获取视频的图像 我已将代码提取到单个 UIViewCon
  • fancybox - 如何添加打开图像的链接?

    大伙计们有什么想法吗 我正在尝试链接 fancybox 中打开的图像 我到处都找遍了 听起来很简单 这是我正在使用的代码 a href img src example thumb png alt example a
  • 如何在iPhone应用程序中创建折线图? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • DFP 问题:无广告可展示

    我的应用程序在 UIScrollView 中提供三个广告 通过 DoubleClick for Publisher 我使用旧版本的适用于 iOS 的 AdMob SDK 一切正常 我决定下载新版本 因为 AppStore 出现一些问题 添加
  • iOS - 当应用程序被终止时处理静默推送通知

    我目前在 iOS 中遇到推送通知问题 我的应用程序收到包含标识符的静默推送通知 然后 该标识符用于从创建本地通知的远程服务器获取数据 据我所知 如果用户强制退出应用程序 即通过双击主页按钮并滑动关闭应用程序 则静默推送通知不会传递到 App
  • 我们可以在 Objective-C 中创建可空/非空属性吗?

    我们可以在 Objective C 中创建可空 非空属性吗 如果可以 那么如何创建 您可以使用 Nullable and Nonnull预选赛 property copy nullable NSString name property co
  • 在iphone中缩放后保留标签的分辨率

    我在视图中有一个标签 缩放视图后 标签看起来有点模糊 分辨率丢失 如何在缩放后保留分辨率 这是我的缩放代码 secondView transform CGAffineTransformIdentity UIView beginAnimati
  • 为 CocoaPods 插件设置 Xcode

    我正在尝试设置终端 Xcode 以便正确工作Xcode CocoaPods 插件 https github com kattrali cocoapods xcode plugin 当我从插件运行集成 cocoapods 选项时 我收到一条消
  • 如何将 Default.png 置于横向模式?

    我有 Default png 480 320 图像 我的问题是 当我启动应用程序时 Default png 图像以横向模式显示 这怎么可能 首先 预先旋转您的初始图像 以便获得纵向和横向版本 然后 使用Default Portrait pn

随机推荐

  • CollectionBase 与泛型

    我正在将应用程序从 NET 1 1 迁移到 NET 2 0 我应该删除 CollectionBase 的所有使用吗 如果是这样 最好的迁移策略是什么 是的 最好看的类是 System Collections Generic 我通常使用列表
  • 如何记录 Doxygen 中不存在的变量?

    例如 我在配置文件中定义了 theme 全局变量 Doxygen 不处理该变量 但我想记录下来 我尝试这样做 var theme brief Active theme 但没有成功 您可以创建一个 doxygen 特定文件来记录变量 例如 配
  • 锁定时 AVAudioPlayer 在 iPhone 5 中不播放音频

    使用 AVAudioPlayer 我尝试在 iphone 播放器播放时播放声音 当设备锁定时也是如此 问题是 在 iPhone 4s ios 7 中 效果很好 但在带有 6 和 7 ios 的 iPhone 5 上没有任何反应 In the
  • 哪种 SQL 模式能够更快地避免插入重复行?

    我知道有两种不重复插入的方法 第一个是使用WHERE NOT EXISTS clause INSERT INTO table name col1 col2 col3 SELECT s s s WHERE NOT EXISTS SELECT
  • 由于超时,应用程序无法在模拟器上启动

    从过去 1 小时开始 我无法启动我的应用程序Eclipse Helios和我的控制台Eclipse给出以下错误 2011 11 21 10 37 00 PagingScrollerExample Failed to install Pagi
  • 以编程方式创建表

    我正在开发 devexreport 我想以编程方式创建一个表 我使用这些代码 但有一个小问题 DevExpress XtraReports UI XRTable tbl new XRTable DevExpress XtraReports
  • Windows 8 Metro 应用程序的依赖注入框架

    我似乎找不到 Windows 8 Metro 应用程序的依赖注入框架 win8 Metro应用程序有框架吗 Ninject 尚不支持 win8 Metro 那么有人有建议吗 城堡 春天 你可以尝试Unity 3 0 for NET4 5 预
  • 升级到 Visual Studio 16.3.0 后,dotnet ef 命令不再起作用

    这种情况首先发生在家里 所以我想这可能是我家里的台式电脑的问题 但现在我回到工作岗位 我尝试升级并得到了同样的结果 升级前截图 升级 Visual Studio 后的屏幕截图 我得到的错误是 无法执行 因为找不到指定的命令或文件 造成这种情
  • c#.net 中委托事件的超级简单示例? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个非常简单的例子来了解自己对这些事件的了解 我觉得很难理解互联网或书籍上提供的示例 这是公开事
  • python 中的 tail -f 没有 time.sleep

    我需要在 python 中模拟 tail f 但我不想在读取循环中使用 time sleep 我想要一些更优雅的东西 比如某种阻塞读取 或者带有超时的 select select 但是 python 2 6 select 文档特别指出 它不
  • MPMoviePlayerViewController,删除 Quicktime 符号/添加背景图像?

    我有一个播放音频的 MPMoviePlayerViewController 我想删除 Quicktime 徽标和 或向播放器添加自定义背景图像 但保留播放控件 我发誓我在 iOS 5 之前就已经这样做过 但我无法重新弄清楚 我尝试过的事情
  • 如何在Python中测试变量是否为空[重复]

    这个问题在这里已经有答案了 val del val if val is None print null 我运行了上面的代码 但是得到了NameError name val is not defined 如何判断变量是否为null 并避免Na
  • GridLayout 之上的 FlowLayout 不起作用

    我正在尝试创建一款刽子手游戏 到目前为止 它进展顺利 但布局设计似乎不太到位 字母表应该以FlowLayout命令位于刽子手图片顶部 底部有 重新启动 帮助 添加新单词 和 退出 按钮 我究竟做错了什么 import java awt im
  • Rails 日志太详细

    如何防止 Rails 记录过多日志 这是我的 production log 文件中的典型跟踪 许多部分 缓存命中 它在开发中很有用 但我不希望在我的生产环境中使用它 Started GET redirected true for 46 19
  • SOAPUI:如何包含外部文件中的 Groovy 脚本

    How can I include groovy script from an external file 我试图使用 def script new GroovyScriptEngine d soapui payment v2 with l
  • CSS -webkit-外观:无;导致复选框未被选中

    All 我有一个复选框 我应用了以下 CSS 样式 webkit appearance none 我拥有的一些文本字段上有相同的代码 并且它们仍然可以正常工作 为什么此功能会导致不允许选中复选框 我喜欢这种复选框的样式 但仍然需要该功能才能
  • 背景颜色变化

    SolidColorBrush bgColor public ModernBTN InitializeComponent this Loaded delegate object sender RoutedEventArgs e bgColo
  • 如何获取电脑中所有打印机的列表

    我需要获取连接到计算机的所有打印机的列表 我如何在 C WinForms 中做到这一点 尝试这个 foreach string printer in System Drawing Printing PrinterSettings Insta
  • 尝试在android中构建一个简单的通知

    我试图在我的 Android 应用程序中设置一个通知 简单地说 它有效 但我需要我的应用程序一直兼容 API 1 不过 我真的很困惑如何做到这一点 有些旧教程已被弃用 有些新教程不支持旧的 API 级别 根据这个SO https stack
  • iOS - 基于设备的不同图像或缩放相同的图像?

    似乎开发人员总是为不同的设备创建不同的图像资源 并根据设备加载它们 但是 只为最高分辨率的设备 iPad 创建图像 然后为 iPhone 6 5 等缩小该图像 有什么缺点吗 我使用 SpriteKit 因此我只需创建不同大小的 SKSpri