2017-02-11 76 views
0

如何为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):myimage320x568.png,[email protected],myimage320x568:

1.0)上iphone 5)

1.1)名称这个图像创建只有一个尺寸320x568(碱的基本图像@ 3x.png

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

方法(B)

  1. 创建的320x568为iphone5的 名称它的图像。 myimage320x568.png

  2. 为iphone6

    创建375x667的图像

    命名myimage375x667.png,制作副本并将其命名[email protected]

  3. 创建414x736的iphone6 +

    图像

    命名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

您好,我相信你不会让使用这个CoreGraphics的图像。你能澄清一下吗?如果你没有在应用程序内制作这个图像,那么请检查我的答案,并让我知道如果你有任何疑问:)。 – KrishnaCA

回答

0

,如果你想用你不能对所有的屏幕尺寸创建图像它覆盖整个屏幕,不会裁剪或扭曲。所以你应该使用方法B.

0

如果你正在添加外部图像,那么我建议你使用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比这。按照这种方法,您的应用程序大小将会增加。

+0

1.0非视网膜(iphone4的),2.0为视网膜(iphone 5,5s,6,6s),3.0为视网膜iphone 6+,7+。如果是这种情况,我使用阿什利(上图)与UIGraphic方法来基于你的方法来检测:创建一个基于iphone6 +点大小的大型图像,并绘制基于view.frame.size并将图像分配给view.background = UIColor(patternImage:image)这是好吗? – MilkBottle

+0

因此,您正在使用CoreGraphics绘制图像的权利。那么你不需要考虑所有这些。 (:100,高度:CGSize(宽度100),假的,UIScreen.main.scale)刚开始用这个,'UIGraphicsBeginImageContextWithOptions上下文之前',你可以简单地设置我更新上面我的代码规模 – KrishnaCA

+0

。我不明白为什么要用w:100,H:100。 – MilkBottle

0

最简单的方法是建立在最大尺寸的单个图像,然后将你的UIImageViewcontentMode.aspectFill