【问题标题】:How to create image as background-image for all screen sizes如何为所有屏幕尺寸创建图像作为背景图像
【发布时间】:2017-06-29 15:31:33
【问题描述】:

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

这里的混乱,我是创建一个还是创建几个基本图像?

我读到了@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
    
    }
    

这对吗?

//-- 更新

这行得通。但我不确定应该使用什么基本图像尺寸?

使用这个 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)

谢谢

【问题讨论】:

  • 嗨,我相信你没有使用 CoreGraphics 制作这张图片。你能澄清一下吗?如果您不是在应用程序中制作此图像,请查看我的答案,如果您有任何疑问,请告诉我:)。

标签: ios swift3 xcode8


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果您要添加外部图像,那么我建议您使用ImageAssets.xcassets。在那里添加您的图像。这样,当您使用UIImage(named: "image") 调用UIImage 时。这样,当您在 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 比这更好。通过采用这种方法,您的应用程序大小将会增加。

    【讨论】:

    • 1.0 用于非视网膜(iphone4),2.0 用于视网膜(iphone 5,5s,6,6s),3.0 用于视网膜 iphone 6+、7+。如果是这种情况,我使用 Ashley (上)使用 UIGraphic 的方法根据您的检测方法进行绘制:基于 iphone6+ 点大小创建一个大图像并基于 view.frame.size 绘制并将图像分配给 view.background = UIColor(patternImage: image) 是这可以吗??
    • 所以,您正在使用 CoreGraphics 正确绘制图像。那么你就不需要考虑所有这些了。在使用 UIGraphicsBeginImageContextWithOptions(CGSize(width: 100, height: 100), false, UIScreen.main.scale) 开始上下文之前,您可以简单地设置比例
    • 我更新了上面的代码。我不明白为什么要使用 w:100, H: 100 。
    • @MilkBottle,请使用基本尺寸。例如 w:100, H:100。
    【解决方案3】:

    最简单的方法是创建最大尺寸的单个图像,然后将您的UIImageViewcontentMode 设置为.aspectFill

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      相关资源
      最近更新 更多