如何以编程方式在iOS9中获得正确的启动图像?

Qij*_*jin 1 ios launchimage

我在LaunchImage资产中添加了不同大小的图像.虽然我使用此代码

UIImage *launchImage = [UIImage imageNamed:@"LaunchImage"]
Run Code Online (Sandbox Code Playgroud)

它返回了大小错误的launchImage,正好返回@ 2x png.当我使用iphone6 plus时,期待的图像是@ 3x png.有关获得正确图像的想法吗?

Qij*_*jin 5

经过大量搜索,我发现LaunchImages很特别,实际上并不是设备上的资产目录.并且所有iOS设备的launchImage文件名列表如下:

  • LaunchImage-568h@2x.png
  • LaunchImage-700-568h@2x.png
  • LaunchImage-700-Landscape@2x~ipad.png
  • LaunchImage-700-景观〜ipad.png
  • LaunchImage-700-Portrait@2x~ipad.png
  • LaunchImage-700-肖像〜ipad.png
  • LaunchImage-700@2x.png
  • LaunchImage-Landscape@2x~ipad.png
  • LaunchImage - 风景〜ipad.png
  • LaunchImage-Portrait@2x~ipad.png
  • LaunchImage画像〜ipad.png
  • LaunchImage.png
  • LaunchImage@2x.png
  • LaunchImage-800-667h@2x.png(iPhone 6)
  • LaunchImage-800-Portrait-736h@3x.png(iPhone 6 Plus Portrait)
  • LaunchImage-800-Landscape-736h@3x.png(iPhone 6 Plus横向)

因此,如果您想获得适用于iphone设备的正确启动图像,请使用以下代码:

    NSString *launchImageName;
    if([UIScreen mainScreen].bounds.size.height > 667.0f) {
        launchImageName = @"LaunchImage-800-736h"; // iphone6 plus
    }
    else if([UIScreen mainScreen].bounds.size.height > 568.0f) {
        launchImageName = @"LaunchImage-800-667h"; // iphone6
    }
    else if([UIScreen mainScreen].bounds.size.height > 480.0f){
        launchImageName = @"LaunchImage-700-568h";// iphone5/5plus
    } else {
        launchImageName = @"LaunchImage-700"; // iphone4 or below
    }
    UIImage *launchImage = [UIImage imageNamed:launchImageName];
Run Code Online (Sandbox Code Playgroud)