如何将图像创建为所有屏幕尺寸的背景图像

时间:2017-02-11 08:03:19

标签: ios swift3 xcode8

如何为iphone 5到6 \ 6+(与7 \ 7+相同)等所有屏幕尺寸创建图像?

这里有困惑,我创建一个还是创建一个FEW基础图像?

我读到了@ 1x,@ 2x,@ 3x。但我仍然感到困惑。

                     iphone4    iphone5        iphone6        phone6+

 Canvas Size(pts)    320x460    320x568        375x667        414x736
 Screen Size(Px)     640x960    640 x1136      750x1334       1080x1920  

这里我将使用的方法,请帮我纠正它们。

这是我将根据每部iphone的屏幕尺寸做的事情。

方法(A):

1.0)仅创建一个大小为320x568的基本图像(基于iphone 5)

1.1)将此图片命名为:myimage320x568.png,myimage320x568 @ 2x.png,myimage320x568 @ 3x.png

是正确的方法吗?系统会为iphone5 / 6/6 +正确缩放图像吗?

方法(B)

  1. 为iphone5创建320x568的图像   说出来。 myimage320x568.png

  2. 为iphone6创建375x667的图像

    将其命名为myimage375x667.png,复制并命名为myimage375x667@2x.png

  3. 为iphone6 +

    创建414x736的图像

    将其命名为myimage414x736.png,myimage414x736 @ 3x.png

    4)使用代码检测iphone型号或screen.height

     if ( iphone5 ){
    
       use myimage320x568.png
    
     } else if (iphone 6 or 7) {
    
         use myimage375x667.png
    
    } else if (iphone 6+ or 7+) {
    
        use myImage414x736.png
    
    }
    
  4. 这是正确的吗?

    // - 更新

    这很有效。但我不确定基本图像大小应该使用什么?

    使用此375x667(iphone6)或此尺寸414x736(iphone 6+)作为基本图像

    UIGraphicsBeginImageContext(self.view.frame.size)
    
    let img = UIImage(named: "iosWPMain1")
    
    img?.draw(in: self.view.bounds, blendMode: .normal, alpha: 1)
    
    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
    
    UIGraphicsEndImageContext()
    
    
    self.view.backgroundColor = UIColor(patternImage: image)
    

    由于

3 个答案:

答案 0 :(得分:0)

如果要使用它覆盖整个屏幕并且不裁剪或扭曲,则无法为所有屏幕尺寸创建图像。所以你应该使用方法B.

答案 1 :(得分:0)

如果您要添加外部图片,我建议您使用ImageAssets.xcassets。在那里添加你的图像。这样,当您使用UIImage致电UIImage(named: "image")时。这样,当您在AppStore中发布应用程序时,iOS将只下载特定设备所需的图像。

此外,您可以使用以下代码获取设备的比例因子

let scale: CGFloat = UIScreen.main.scale

这样,您可以将逻辑更改为:

let scaleFactor: CGFloat = UIScreen.main.scale

if scaleFactor == 1.0 {
   // use 1x image
}else if scaleFactor == 2.0 {
   // use 2x image
}else if scaleFactor == 3.0 {
   // use 3x image
}

但是,使用ImageAssets.xcassets比使用它更好。通过遵循此方法,您的应用规模将会增加。

答案 2 :(得分:0)

最简单的方法是创建最大尺寸的单张图片,然后将UIImageView contentMode设置为.aspectFill