iOS主流開機(jī)屏有2種:LaunchImage、LaunchScreen
LaunchImage
通過讀取info.plist文件,根據(jù)設(shè)備尺寸獲取啟動(dòng)頁圖片
(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
為保證蘋果設(shè)備體驗(yàn)一致蔼紧,2020年蘋果要求開機(jī)屏必須使用LaunchScreen愧捕。LaunchScreen是Storyboard方式躯枢。
通過實(shí)例化Storyboard,找到開機(jī)屏圖片。
Storyboard實(shí)例化涮毫,首先需要設(shè)置ViewController的Storyboard ID
image.png
- (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設(shè)置了束縛瞬欧,不能直接使用,必須新建imageview
UIImage *image = [(UIImageView *)view image];
launchView = [[UIImageView alloc] initWithImage:image];
launchView.frame = [UIScreen mainScreen].bounds;
launchView.contentMode = UIViewContentModeScaleAspectFill;
break;
}
}
}
return launchView;
}