如何为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)
为iphone5创建320x568的图像 说出来。 myimage320x568.png
为iphone6创建375x667的图像
将其命名为myimage375x667.png,复制并命名为myimage375x667@2x.png
为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)
由于
答案 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