iOS主流开机屏有2种:LaunchImage、LaunchScreen
LaunchImage
通过读取info.plist文件,根据设备尺寸获取启动页图片
(UIImage *) getLaunchImage {
CGSize viewSize = [UIScreen mainScreen].bounds.size;
NSString *viewOrientation = @"Portrait"; //竖屏,横屏为Landscape
NSString *launchName = nil;
NSArray *imageDic = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"UILaunchImages"];
for (NSDictionary *dict in imageDic) {
CGSize imageSize = CGSizeFromString(dict[@"UILaunchImageSize"]);
if (CGSizeEqualToSize(imageSize, viewSize) &&
[viewOrientation isEqualToString:dict[@"UILaunchImageOrientation"]])
{
launchName = dict[@"UILaunchImageName"];
break;
}
}
return [UIImage imageNamed:launchName];
}
LaunchScreen
为保证苹果设备体验一致,2020年苹果要求开机屏必须使用LaunchScreen。LaunchScreen是Storyboard方式。
通过实例化Storyboard,找到开机屏图片。
Storyboard实例化,首先需要设置ViewController的Storyboard ID

- (UIImageView *)getLaunchImage {
UIImageView *launchView;
UIViewController *viewController = [[UIStoryboard storyboardWithName:@"Launch Screen" bundle:nil] instantiateViewControllerWithIdentifier:@"Launch Screen"];
if (viewController && viewController.view) {
for (UIView *view in viewController.view.subviews) {
if ([view isKindOfClass:[UIImageView class]]) {
// storyboard的imageview设置了束缚,不能直接使用,必须新建imageview
UIImage *image = [(UIImageView *)view image];
launchView = [[UIImageView alloc] initWithImage:image];
launchView.frame = [UIScreen mainScreen].bounds;
launchView.contentMode = UIViewContentModeScaleAspectFill;
break;
}
}
}
return launchView;
}
网友评论