美文网首页
iOS中NSBundle使用小结

iOS中NSBundle使用小结

作者: 奔跑的小蚂蚁_8b28 | 来源:发表于2021-08-18 08:40 被阅读0次

bundle是一个目录,其中包含了程序会使用到的资源. 这些资源包含了如图像,声音,文本文件,属性列表,语言包,编译好的代码,nib文件(用户也会把bundle称为plug-in). 对应bundle,cocoa提供了类NSBundle.我们的程序是一个bundle. 在Finder中,一个应用程序看上去和其他文件没有什么区别. 但是实际上它是一个包含了nib文件,编译代码,以及其他资源的目录. 我们把这个目录叫做程序的main bundle。

1、通过使用下面的方法得到程序的main bundle

NSBundle *myBundle = [NSBundle mainBundle];

2、使用NSBundle加载nib文件

BOOL successful = [NSBundle loadNibNamed:@"About" owner:someObject];

self.titleView = [[[NSBundle mainBundle]loadNibNamed:NSStringFromClass([CCNearbyTitleView class]) owner:self options:nil] firstObject];

3、使用NSBundle加载xml文件

NSString *filePath = [[NSBundle mainBundle] pathForResouse:@"re" ofType:@"xml"];

NSData *data = [[NSData alloc] initWithContentsOfFile:filePath];

4、使用NSBundle加载图片文件

NSString *filePath = [[NSBundle mainBundle] pathForResouse:@"AppIcon" ofType:@"png"];

UIImage *image=[UIImage imageWithContentsOfFile:filePath];

//同理这个[UIImage imageNamed:@"AppIcon"];

5、 使用NSBundle加载本地语言包

中文

"change_language" = "悄悄是别离的笙箫,沉默是今晚的康桥";

"button" = "切换语言";
  英文:
  "change_language" = "Quietness is my farewell music, silence is Cambridge tonight";
  "button" = "Change Language";

NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

NSString *currLanguage = [def valueForKey:@"LocalLanguageKey"];

if(!currLanguage){

        NSArray *preferredLanguages = [NSLocale preferredLanguages];

    

        currLanguage = preferredLanguages[0];

    

        if ([currLanguage hasPrefix:@"en"]) {

            currLanguage = @"en";

        }else if ([currLanguage hasPrefix:@"zh"]) {

            currLanguage = @"zh-Hant";

        }else currLanguage = @"en";

    

        [def setValue:currLanguage forKey:@"LocalLanguageKey"];

        [def synchronize];

    }

NSString *path = [[NSBundle mainBundle] pathForResource:[[NSUserDefaults standardUserDefaults] objectForKey:@"LocalLanguageKey"] ofType:@"lproj"];

  NSBundle* bundle = [NSBundle bundleWithPath:path];

  //此处是上面赋值的bundle

  NSString *str = [bundle localizedStringForKey:@"change_language" value:nil table:@"MultiLanguage"];

  NSString *buttonStr = [bundle localizedStringForKey:@"button" value:nil table:@"MultiLanguage"];

NSLog(@"wenzi:%@,%@",str,buttonStr);

相关文章

网友评论

      本文标题:iOS中NSBundle使用小结

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