#import NSBundle * _Nonnull getAppBundle() { static NSBundle *appBundle = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ NSBundle *bundle = [NSBundle mainBundle]; if ([[bundle.bundleURL pathExtension] isEqualToString:@"appex"]) { bundle = [NSBundle bundleWithURL:[[bundle.bundleURL URLByDeletingLastPathComponent] URLByDeletingLastPathComponent]]; } else if ([[bundle.bundleURL pathExtension] isEqualToString:@"framework"]) { bundle = [NSBundle bundleWithURL:[[bundle.bundleURL URLByDeletingLastPathComponent] URLByDeletingLastPathComponent]]; } else if ([[bundle.bundleURL pathExtension] isEqualToString:@"Frameworks"]) { bundle = [NSBundle bundleWithURL:[bundle.bundleURL URLByDeletingLastPathComponent]]; } appBundle = bundle; }); return appBundle; } @implementation UIImage (AppBundle) - (instancetype _Nullable)initWithBundleImageName:(NSString * _Nonnull)bundleImageName { return [UIImage imageNamed:bundleImageName inBundle:getAppBundle() compatibleWithTraitCollection:nil]; } @end