【问题标题】:iOS: display an image with the same quality for all screensiOS:为所有屏幕显示相同质量的图像
【发布时间】:2017-03-13 16:06:19
【问题描述】:

我在情节提要中的视图包含一个 imageView,其约束条件为 top= 0、height= 55、width= 230 并水平居中。使用 Xcode 最新版本中的“查看为”选项,我意识到所有屏幕的图像显示及其质量并不相同。在 iPhone 4s 中,质量很好,但图像同样大。否则,在 iPhone 6s plus 屏幕中,我看到图像尺寸适合屏幕但质量不佳。

如何在所有屏幕上以相同的方式显示图像?谁能给我正确的限制来解决这个问题?

【问题讨论】:

  • 尝试为你的 UIImageView 设置正确的内容模式
  • @RaduNunu 你能告诉我这种情况下最好的内容模式是什么吗?
  • 很少,但我想你需要 AspectToFit 或 AspectToFill,两者都尊重你的图像比例

标签: ios iphone swift storyboard constraints


【解决方案1】:

根据设备的屏幕,您应该定义图像的各种表示。

来自Apple Developer 门户:

iOS 使用坐标系统将内容放置在屏幕上。这 坐标系基于点的测量值,这些点映射到 显示中的像素。

如果您定义了所有三种图像分辨率(normal/@1x@2x@3x),那么您应该很高兴。

重要的是,normal@1x 应具有以下参数:height: 55, width: 230

@2x 的大小应该是@1x 的两倍:height: 110, width:460

@3x 的大小应该是@1x 的三倍:height: 165, width:690

假设你的图片名为my_image,它是一个png。

  • @1x 应该被称为:my_image.png
  • @2x 应该被称为:my_image@2x.png
  • @3x 应该被称为:my_image@3x.png

将所有这些图像添加到Assets.xcassets。点击Assets.xcassets。打开后,您应该会在左侧看到一个+ 标志。

点击+ 标志并为您的图片命名:

并将它们插入这些插槽中:

现在,当你尝试使用这张图片时,你可以简单地用 Swift 说:

let image = UIImage(named: "my_image")

【讨论】:

  • 感谢您的回复。如果我理解你所说的,我必须有相同的图像,但有 3 种不同的分辨率(3 份)。在代码中,我必须检测屏幕尺寸以显示正确的图像(所以正确的分辨率)。不是吗?
  • 第一部分你是对的,需要3种不同的图像分辨率。但是,如果您使用正确的后缀将它们添加到资产目录中,那么操作系统将为您选择正确的后缀。我在我的命名答案中添加了一个小例子。
  • 感谢编辑我现在明白我必须做什么,但我有一个小问题:我的项目中没有 Images.xcassets。我只有 Assets.xcassets,老实说我从未使用过它。你能指导我吗?
  • Assets.xcassets 是一样的。我将添加一些屏幕截图。
  • 非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-14
  • 1970-01-01
相关资源
最近更新 更多