iOS获取开机屏

作者: xjkstar | 来源:发表于2020-02-17 14:29 被阅读0次

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;
}

相关文章

网友评论

    本文标题:iOS获取开机屏

    本文链接:https://www.haomeiwen.com/subject/ermbfhtx.html