iOS:为所有屏幕显示相同质量的图像
故事板中的“我的视图”包含一个imageView,其约束条件为top=0、height=55、width=230和水平居中。在最新版本的Xcode中使用“查看为”选项,我意识到图像的显示和质量并不是所有屏幕都一样。iPhone4S的质量很好,但图像同样大。另外,在iPhone6sPlus屏幕上,我发现图像大小适合屏幕,但质量不好iOS:为所有屏幕显示相同质量的图像,ios,iphone,swift,storyboard,constraints,Ios,Iphone,Swift,Storyboard,Constraints,故事板中的“我的视图”包含一个imageView,其约束条件为top=0、height=55、width=230和水平居中。在最新版本的Xcode中使用“查看为”选项,我意识到图像的显示和质量并不是所有屏幕都一样。iPhone4S的质量很好,但图像同样大。另外,在iPhone6sPlus屏幕上,我发现图像大小适合屏幕,但质量不好 如何在所有屏幕上以相同的方式显示图像?任何人都可以给我正确的约束来解决这个问题吗?根据设备的屏幕,您应该定义图像的各种表示形式 从门户网站: iOS使用坐标系在屏幕上放
如何在所有屏幕上以相同的方式显示图像?任何人都可以给我正确的约束来解决这个问题吗?根据设备的屏幕,您应该定义图像的各种表示形式 从门户网站: iOS使用坐标系在屏幕上放置内容。这 坐标系基于点的测量,这些点映射到 显示中的像素 如果您定义了所有三种图像分辨率(
normal
/@1x
,@2x
,@3x
),您就可以开始了
重要的是,normal
或@1x
应具有以下参数:高度:55,宽度:230
@2x
的大小应该是@1x
的两倍:高度:110,宽度:460
@3x
的大小应该是@1x
的三倍:高度:165,宽度:690
假设您的图像名为my_image
,它是一个png
- 应该调用
:@1x
my\u image.png
应该被调用:@2x
my_image@2x.png
- 应该调用
:@3x
my_image@3x.png
Assets.xcsets
。单击Assets.xcsets
。打开后,您应该会在左侧看到一个+
标志
点击+
符号并为您的图像命名:
并将其插入这些插槽中:
现在,当您尝试使用此图像时,您只需用Swift简单地说:
let image = UIImage(named: "my_image")
根据设备的屏幕,您应该定义图像的各种表示形式 从门户网站: iOS使用坐标系在屏幕上放置内容。这 坐标系基于点的测量,这些点映射到 显示中的像素 如果您定义了所有三种图像分辨率(
normal
/@1x
,@2x
,@3x
),您就可以开始了
重要的是,normal
或@1x
应具有以下参数:高度:55,宽度:230
@2x
的大小应该是@1x
的两倍:高度:110,宽度:460
@3x
的大小应该是@1x
的三倍:高度:165,宽度:690
假设您的图像名为my_image
,它是一个png
- 应该调用
:@1x
my\u image.png
应该被调用:@2x
my_image@2x.png
- 应该调用
:@3x
my_image@3x.png
Assets.xcsets
。单击Assets.xcsets
。打开后,您应该会在左侧看到一个+
标志
点击+
符号并为您的图像命名:
并将其插入这些插槽中:
现在,当您尝试使用此图像时,您只需用Swift简单地说:
let image = UIImage(named: "my_image")
尝试为您的应用程序设置正确的内容模式UIImageView@RaduNunu你能告诉我这种情况下最好的内容模式是什么吗?虽然有一些,但我想你需要AspectToFit或AspectToFill,两者都尊重图像的比例,请尝试为您的图像设置正确的内容模式UIImageView@RaduNunu你能告诉我这种情况下最好的内容模式是什么吗?虽然有一些,但我想你需要AspectToFit或AspectToFill,两者都尊重你图像的比例谢谢你的回复。如果我明白你所说的,我必须有相同的图像,但有3个不同的分辨率(3份)。在代码中,我必须检测屏幕大小以显示正确的图像(因此分辨率正确)。不是吗?第一部分你是对的,需要从图像中获得3种不同的分辨率。但是,如果您使用正确的后缀将它们添加到资产目录中,操作系统将为您选择正确的后缀。我在我的答案中添加了一个关于命名的小例子。感谢编辑,我现在明白了我要做什么,但我有一个小问题:我的项目中没有Images.xcasets。我只有资产,老实说,我从来没有用过。你能指导我吗?Assets.xcsets是一样的。我将添加一些截图。非常感谢!谢谢你的回复。如果我明白你所说的,我必须有相同的图像,但有3个不同的分辨率(3份)。在代码中,我必须检测屏幕大小以显示正确的图像(因此分辨率正确)。不是吗?第一部分你是对的,需要从图像中获得3种不同的分辨率。但是,如果您使用正确的后缀将它们添加到资产目录中,操作系统将为您选择正确的后缀。我在我的答案中添加了一个关于命名的小例子。感谢编辑,我现在明白了我要做什么,但我有一个小问题:我的项目中没有Images.xcasets。我只有资产,老实说,我从来没有用过。你能指导我吗?Assets.xcsets是一样的。我将添加一些截图。非常感谢!