访问 iPad 以编程方式启动图像?
Access iPad launch images programmatically?
我在 Images.xcassets
中使用 LaunchImage.launchimage
来管理启动图像。但我也在尝试使用应用程序内的启动图像。
我读过 this answer :
The documentation indicates that the imageNamed: method on UIImage
should auto-magically select the correct version
所以,我使用了这段代码
UIImageView *backImage = [UIImageView new];
backImage.image = [UIImage imageNamed:@"LaunchImage"];
在 iPhone 4、5、6、6+ 上工作时,它工作得很好并获得正确的 LaunchImage,但是在 iPad retina[=35= 上工作时] 它 returns LaunchImage-700@2x.png
这是 iPhone 4s 640 x 960 pixels
的 LaunchImage
那么如何以编程方式访问 iPad 的正确 LaunchImage ??
LaunchImage
文件夹中 Contents.json
的内容
{
"images" : [
{
"extent" : "full-screen",
"idiom" : "iphone",
"subtype" : "736h",
"filename" : "LaunchImage-800-Portrait-736h@3x.png",
"minimum-system-version" : "8.0",
"orientation" : "portrait",
"scale" : "3x"
},
{
"extent" : "full-screen",
"idiom" : "iphone",
"subtype" : "667h",
"filename" : "LaunchImage-800-667h@2x.png",
"minimum-system-version" : "8.0",
"orientation" : "portrait",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"filename" : "LaunchImage-700@2x.png",
"scale" : "2x"
},
{
"extent" : "full-screen",
"idiom" : "iphone",
"subtype" : "retina4",
"filename" : "LaunchImage-700-568h@2x.png",
"minimum-system-version" : "7.0",
"orientation" : "portrait",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "ipad",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"filename" : "LaunchImage-700-Portrait~ipad.png",
"scale" : "1x"
},
{
"orientation" : "landscape",
"idiom" : "ipad",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"filename" : "LaunchImage-700-Landscape~ipad.png",
"scale" : "1x"
},
{
"orientation" : "portrait",
"idiom" : "ipad",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"filename" : "LaunchImage-700-Portrait@2x~ipad.png",
"scale" : "2x"
},
{
"orientation" : "landscape",
"idiom" : "ipad",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"filename" : "LaunchImage-700-Landscape@2x~ipad.png",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"extent" : "full-screen",
"filename" : "LaunchImage-700.png",
"scale" : "1x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"extent" : "full-screen",
"filename" : "LaunchImage-700@2x.png",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"extent" : "full-screen",
"filename" : "LaunchImage-700-568h@2x.png",
"subtype" : "retina4",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "ipad",
"extent" : "full-screen",
"filename" : "LaunchImage-700-Portrait~ipad.png",
"scale" : "1x"
},
{
"orientation" : "landscape",
"idiom" : "ipad",
"extent" : "full-screen",
"filename" : "LaunchImage-700-Landscape~ipad.png",
"scale" : "1x"
},
{
"orientation" : "portrait",
"idiom" : "ipad",
"extent" : "full-screen",
"filename" : "LaunchImage-700-Portrait@2x~ipad.png",
"scale" : "2x"
},
{
"orientation" : "landscape",
"idiom" : "ipad",
"extent" : "full-screen",
"filename" : "LaunchImage-700-Landscape@2x~ipad.png",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
我认为这些扩展名(例如-700-Landscape@2x~ipad)无法识别。
将以下项目添加到您的 Contents.json 中仅用于测试目的:
{
"orientation" : "landscape",
"idiom" : "ipad",
"extent" : "full-screen",
"filename" : "LaunchImage.png",
"scale" : "1x"
}
现在试试 imageNamed: 方法。
或尝试 imageNamed: 使用图像全名:
backImage.image = [UIImage imageNamed:@"LaunchImage-700-Landscape~ipad.png"];
LaunchImage.launchimage
您真的在使用 Images.xcassets
来管理启动图像吗?
你不是用 LaunchImage.launchimage
代替吗?
如果是这样,就会出现混乱。您不能使用 [UIImage imageNamed:@"LaunchImage"];
从 LaunchImage.launchimage
.
加载
规范名称
LaunchImage.png
LaunchImage@2x.png
LaunchImage-700@2x.png
LaunchImage-568h@2x.png
LaunchImage-700-568h@2x.png
LaunchImage-700-Landscape@2x~ipad.png
LaunchImage-700-
Portrait@2x~ipad.png
在该列表中 不 。
我已经用很长的方法解决了这个问题
BOOL deviceIsIpad = NO;
if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ) {
deviceIsIpad = YES;
}
if (!deviceIsIpad) {
backImage.image = [UIImage imageNamed:@"LaunchImage"];
} else {
UIInterfaceOrientation interfaceOrientation = self.interfaceOrientation;
CGFloat screenScale = [[UIScreen mainScreen] scale];
if (interfaceOrientation == UIDeviceOrientationPortrait || interfaceOrientation == UIDeviceOrientationPortraitUpsideDown){
if (screenScale > 1) {
backImage.image = [UIImage imageNamed:@"LaunchImage-700-Portrait@2x~ipad.png"];
} else {
backImage.image = [UIImage imageNamed:@"LaunchImage-700-Portrait~ipad.png"];
}
} else {
if (screenScale > 1) {
backImage.image = [UIImage imageNamed:@"LaunchImage-700-Landscape@2x~ipad.png"];
} else {
backImage.image = [UIImage imageNamed:@"LaunchImage-700-Landscape~ipad.png"];
}
}
}
我在 Images.xcassets
中使用 LaunchImage.launchimage
来管理启动图像。但我也在尝试使用应用程序内的启动图像。
我读过 this answer :
The documentation indicates that the imageNamed: method on UIImage should auto-magically select the correct version
所以,我使用了这段代码
UIImageView *backImage = [UIImageView new];
backImage.image = [UIImage imageNamed:@"LaunchImage"];
在 iPhone 4、5、6、6+ 上工作时,它工作得很好并获得正确的 LaunchImage,但是在 iPad retina[=35= 上工作时] 它 returns LaunchImage-700@2x.png
这是 iPhone 4s 640 x 960 pixels
那么如何以编程方式访问 iPad 的正确 LaunchImage ??
LaunchImage
文件夹中 Contents.json
的内容
{
"images" : [
{
"extent" : "full-screen",
"idiom" : "iphone",
"subtype" : "736h",
"filename" : "LaunchImage-800-Portrait-736h@3x.png",
"minimum-system-version" : "8.0",
"orientation" : "portrait",
"scale" : "3x"
},
{
"extent" : "full-screen",
"idiom" : "iphone",
"subtype" : "667h",
"filename" : "LaunchImage-800-667h@2x.png",
"minimum-system-version" : "8.0",
"orientation" : "portrait",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"filename" : "LaunchImage-700@2x.png",
"scale" : "2x"
},
{
"extent" : "full-screen",
"idiom" : "iphone",
"subtype" : "retina4",
"filename" : "LaunchImage-700-568h@2x.png",
"minimum-system-version" : "7.0",
"orientation" : "portrait",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "ipad",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"filename" : "LaunchImage-700-Portrait~ipad.png",
"scale" : "1x"
},
{
"orientation" : "landscape",
"idiom" : "ipad",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"filename" : "LaunchImage-700-Landscape~ipad.png",
"scale" : "1x"
},
{
"orientation" : "portrait",
"idiom" : "ipad",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"filename" : "LaunchImage-700-Portrait@2x~ipad.png",
"scale" : "2x"
},
{
"orientation" : "landscape",
"idiom" : "ipad",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"filename" : "LaunchImage-700-Landscape@2x~ipad.png",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"extent" : "full-screen",
"filename" : "LaunchImage-700.png",
"scale" : "1x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"extent" : "full-screen",
"filename" : "LaunchImage-700@2x.png",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"extent" : "full-screen",
"filename" : "LaunchImage-700-568h@2x.png",
"subtype" : "retina4",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "ipad",
"extent" : "full-screen",
"filename" : "LaunchImage-700-Portrait~ipad.png",
"scale" : "1x"
},
{
"orientation" : "landscape",
"idiom" : "ipad",
"extent" : "full-screen",
"filename" : "LaunchImage-700-Landscape~ipad.png",
"scale" : "1x"
},
{
"orientation" : "portrait",
"idiom" : "ipad",
"extent" : "full-screen",
"filename" : "LaunchImage-700-Portrait@2x~ipad.png",
"scale" : "2x"
},
{
"orientation" : "landscape",
"idiom" : "ipad",
"extent" : "full-screen",
"filename" : "LaunchImage-700-Landscape@2x~ipad.png",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
我认为这些扩展名(例如-700-Landscape@2x~ipad)无法识别。
将以下项目添加到您的 Contents.json 中仅用于测试目的:
{
"orientation" : "landscape",
"idiom" : "ipad",
"extent" : "full-screen",
"filename" : "LaunchImage.png",
"scale" : "1x"
}
现在试试 imageNamed: 方法。
或尝试 imageNamed: 使用图像全名:
backImage.image = [UIImage imageNamed:@"LaunchImage-700-Landscape~ipad.png"];
LaunchImage.launchimage
您真的在使用 Images.xcassets
来管理启动图像吗?
你不是用 LaunchImage.launchimage
代替吗?
如果是这样,就会出现混乱。您不能使用 [UIImage imageNamed:@"LaunchImage"];
从 LaunchImage.launchimage
.
规范名称
LaunchImage.png
LaunchImage@2x.png
LaunchImage-700@2x.png
LaunchImage-568h@2x.png
LaunchImage-700-568h@2x.png
LaunchImage-700-Landscape@2x~ipad.png
LaunchImage-700-
Portrait@2x~ipad.png
在该列表中 不 。
我已经用很长的方法解决了这个问题
BOOL deviceIsIpad = NO;
if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ) {
deviceIsIpad = YES;
}
if (!deviceIsIpad) {
backImage.image = [UIImage imageNamed:@"LaunchImage"];
} else {
UIInterfaceOrientation interfaceOrientation = self.interfaceOrientation;
CGFloat screenScale = [[UIScreen mainScreen] scale];
if (interfaceOrientation == UIDeviceOrientationPortrait || interfaceOrientation == UIDeviceOrientationPortraitUpsideDown){
if (screenScale > 1) {
backImage.image = [UIImage imageNamed:@"LaunchImage-700-Portrait@2x~ipad.png"];
} else {
backImage.image = [UIImage imageNamed:@"LaunchImage-700-Portrait~ipad.png"];
}
} else {
if (screenScale > 1) {
backImage.image = [UIImage imageNamed:@"LaunchImage-700-Landscape@2x~ipad.png"];
} else {
backImage.image = [UIImage imageNamed:@"LaunchImage-700-Landscape~ipad.png"];
}
}
}