为什么我们需要这三种特殊的图像类型?

如果我的应用程序上有一个带有背景图像的按钮,比如50像素x 50像素,为什么我需要3个版本的图像?是什么阻止我只制作一张分辨率更高的图像,比如700x700,这样当它在任何iPhone上缩小时,都不会低于设备所需的最大分辨率?

我唯一能想到的是,它只会占用更多空间,但对于简单的应用程序/简单的按钮来说,它似乎不会引起任何问题.我已经在一些设备上试用过,当我模拟它并使用这种方法时,发现它们之间没有区别.然而,随着我对应用程序和其他东西的深入研究,我确信这项技术背后有其实质内容.

推荐答案

如果没有确切的尺寸,可能会发生两件事:

Upscaling

@3x@2x可以从@1x放大,但通常视觉效果模糊,线条粗大,看起来不太好.从@2x向上zoom @3x可能更糟,因为必须使用子像素.

Downscaling

一般说来,结果比放大要好得多,然而,这并不适用于所有的图像.如果@3x图像的边框为1px,缩小到@1x后,边框将不可见(0.33px).这同样适用于图像中的任何小对象.缩小比例会 destruct 所有细节.

一般而言,为了使图像看起来完美,您需要避免zoom 和zoom .您总是可以只使用@2x@3x张图像,只有在看到视觉问题时才能添加其他比例.使用更高的分辨率不会改善缩小比例.高分辨率仅用于避免升级.从高比例(例如@100x)缩小到@1x不会产生比从@3x缩小更好的效果.

Ios相关问答推荐

Flutter应用程序无法使用IOS/Swift的蓝牙核心库发现某些外围设备

自定义alert 未执行任何操作

如何使用参与者允许并行读取,但阻止对SWIFT中资源的并发读取和写入?

如何结合`@dynamicMemberLookup`和`ExpressibleByStringInterpolation`来实现方法链?

保存和读取登录到 keys 串不工作 IOS swift

视图之间的 SwiftUI 过渡,没有过渡

搜索在 ios xamarin.forms 中不起作用

如何将标准化坐标系中的点的位置转换为具有相对位置的常规坐标系?

为什么我的应用在 Testflight 中没有下载 dSYM 按钮?

在 UICollectionView 上从右到左对齐

在 Swift 中按下返回键时在文本字段之间切换

界面生成器 - 无法从路径加载设计对象(空)

Swift枚举继承

UIView 动画与 CALayers

UIView 和 initWithFrame 以及一个 NIB 文件.如何加载 NIB 文件?

使用 convertPoint 获取父 UIView 内的相对位置

单击 GoogleSignIn 按钮时应用程序崩溃

为什么 Xcode 4 不创建任何产品?

具有两种不同字体大小的 NSAttributedString 示例?

iOS 7 应用程序图标、启动图像和命名约定,同时保留 iOS 6 图标