iOS获取开机屏

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


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设置了束缚,不能直接使用,必须新建imageview
                UIImage *image = [(UIImageView *)view image];
                launchView = [[UIImageView alloc] initWithImage:image];
                launchView.frame = [UIScreen mainScreen].bounds;
                launchView.contentMode = UIViewContentModeScaleAspectFill;

                break;
            }
        }
    }
    
    return launchView;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容