Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将iPhone X的全屏图像添加到xcassets(而不是发布图像)?_Ios_Xcode_Iphone X_Xcasset - Fatal编程技术网

Ios 如何将iPhone X的全屏图像添加到xcassets(而不是发布图像)?

Ios 如何将iPhone X的全屏图像添加到xcassets(而不是发布图像)?,ios,xcode,iphone-x,xcasset,Ios,Xcode,Iphone X,Xcasset,我在我的景观应用程序中有一个背景图像,它覆盖了整个屏幕。我像往常一样使用@1x、@2x和@3x将其添加到xcassets中 在除iPhone X以外的所有设备上,图像都能正确显示。然而,由于iPhoneX的纵横比与其他iPhone不同,因此它的侧面被裁剪。如果我选择Aspect Fill,它会被拉伸,看起来很差 我已经以iPhone X的正确纵横比创建了一个额外的背景图像,但是如何将其添加到xcassets中呢?只有@1x、@2x和@3x的选项。我错过什么了吗 (我必须强调的是,这不是一张发布图

我在我的景观应用程序中有一个背景图像,它覆盖了整个屏幕。我像往常一样使用@1x、@2x和@3x将其添加到xcassets中

在除iPhone X以外的所有设备上,图像都能正确显示。然而,由于iPhoneX的纵横比与其他iPhone不同,因此它的侧面被裁剪。如果我选择Aspect Fill,它会被拉伸,看起来很差

我已经以iPhone X的正确纵横比创建了一个额外的背景图像,但是如何将其添加到xcassets中呢?只有@1x、@2x和@3x的选项。我错过什么了吗

(我必须强调的是,这不是一张发布图片——它是一张图片视图中的图片,作为我应用程序上所有屏幕的背景)

编辑

对于其他与此抗争的人来说,多亏了4kman的帮助,我做到了这一点:

override func viewDidLayoutSubviews() {
    // Work out aspect ratio to show correct background image
    let imageWidth = background.bounds.width
    let imageHeight = background.bounds.height
    let aspectRatio = imageWidth / imageHeight

    if aspectRatio >= 2.0 {  // iPhone X ratio is 2.16, other iPhones are 1.77
        background.image = UIImage(named: "background-X")
    } else {
        background.image = UIImage(named: "background")
    }
}

一个图像资源中不能有具有不同纵横比的图像。如果你想专门针对iPhoneX,你应该添加一个不同的资产。给它一个后缀以区别于原始图像(例如“-x”)。

谢谢您的回答。因此,我目前有一个名为“背景”的资产,添加了1倍、2倍和3倍。如果我添加另一个名为“background-x”的资源并将新图像添加到3x框中,如果图像视图加载“background”,我如何将其加载到图像视图中?@Eatton您应该通过访问视图的边界来检查当前视图的纵横比是否为2:1,并在运行时相应地更改图像视图的图像。我明白您的意思,但当我执行myImage.bounds.width时,无论它在什么设备上运行,它总是返回568。如何获取宽度和高度以计算纵横比?@Eatton您确定在设置布局后检索到图像的大小吗?尝试在
viewdilayoutsubviews
中访问它。啊,是的,成功了。我试图在viewDidLoad中检测纵横比。谢谢你的帮助!我认为在计算纵横比时,您已经交换了宽度和高度。如果将纵横比值与
2.0
进行比较,则公式应为
let aspectRatio=imageHeight/imageWidth