iOS中NSBundle使用小结
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使用小结的更多相关文章
- iOS中NSBundle的介绍
bundle是一个目录,其中包含了程序会使用到的资源.这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-in).对应bundle,cocoa提供了类NSBund ...
- iOS中GCD的使用小结
http://www.jianshu.com/p/ae786a4cf3b1 本篇博客共分以下几个模块来介绍GCD的相关内容: 多线程相关概念 多线程编程技术的优缺点比较? GCD中的三种队列类型 Th ...
- iOS 中的 HotFix 方案总结详解
相信HotFix大家应该都很熟悉了,今天主要对于最近调研的一些方案做一些总结.iOS中的HotFix方案大致可以分为四种: WaxPatch(Alibaba) Dynamic Framework(Ap ...
- iOS中获取各种文件的目录路径的方法
我们的app在手机中存放的路径是:/var/mobile/Applications/4434-4453A-B453-4ADF535345ADAF344 后面的目录4434-4453A-B453-4AD ...
- IOS中无缓存的图片载入
在IOS中,我们常用[UIImage imageNamed]方法获取图像,这种方法简便,容易理解.但是有个缺点,就是有缓存.这种方式 传人的图像的就是通过文件名方式文件名.如果,我们内存有限,我们就必 ...
- ios 中使用https的知识
先看文章,这篇文章说的是使用AFNetworing进行https时的事项,十分好!http://blog.cnbang.net/tech/2416/ ios中使用https,主要就是使用NSURLCr ...
- iOS中NSUserDefaults详解
NSUserDefault 作为iOS中一种轻量级数据本地化方式,简单易用,经常用于存储一些应用相关属性记录,例如图书app的背景色,进度,上次阅读的书籍及相关配置信息.NSUserDefault实质 ...
- iOS中JS 与OC的交互(JavaScriptCore.framework)
iOS中实现js与oc的交互,目前网上也有不少流行的开源解决方案: 如:react native 当然一些轻量级的任务使用系统提供的UIWebView 以及JavaScriptCore.framewo ...
- IOS中获取各种文件的路径介绍及方法
IOS中获取各种文件的目录路径的方法 技术交流新QQ群:414971585 iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. docum ...
- iOS中使用RSA对数据进行加密解密
RSA算法是一种非对称加密算法,常被用于加密数据传输.如果配合上数字摘要算法, 也可以用于文件签名. 本文将讨论如何在iOS中使用RSA传输加密数据. 本文环境 mac os openssl-1.0. ...
随机推荐
- 【BatchProgram】工作用的小工具 - 自动访问常用页面
需求: 我需要打开很多页面,但是忘了收藏的话,每次都要重新去找一遍打开 页面很多,不是一两个了,为什么这么多?因为开发情况就是这样啊: 正式生产一个页面,UAT测试一个页面,本地调试一个页面 每日工作 ...
- 【MySQL】Windows-5.7.30 解压版 下载安装
1.Download 下载 mysql官网: https://dev.mysql.com/ 找到download点击进入下载页面: https://dev.mysql.com/downloads/ 找 ...
- NVIDIA 创始人黄仁勋谈创建公司的最初6个月 —— 不要去写商业计划书
地址: https://www.youtube.com/watch?v=yU3GUHDf0mk
- ubuntu 18.04系统下CPU实时频率查看工具 cpupower
1. cpupower 安装 sudo apt install linux-tools-common 2. CPU实时频率查看 watch -n 1 sudo cpupower monitor ...
- baselines算法库baselines/common/input.py模块分析
baselines算法库baselines/common/input.py模块代码: import numpy as np import tensorflow as tf from gym.space ...
- plsql中的常用功能整理
1.关键字查找 2.保存登录密码 完美!
- java-多线程(下)
多线程简单入门(Java)(下篇:多线程Java中的使用) 目录 一.创建多线程 二.线程的安全 三.线程的通信 一.创建多线程 在Java中,多线程的创建有4种方式. 方式一:继承于Thread类; ...
- Java中0.2减0.1 结果为什么不是0.1?
double 表示这种类型的数值精度是 float 类型的两倍(有人称之为双精度数值).绝大部 分应用程序都采用double 类型.在很多情况下,float 类型的精度很难满足需求.实际上,只 有很少 ...
- VideoGeneration
Stable Video Diffusion: Scaling Latent Video Diffusion Models to Large Datasets 主要贡献:设计了一套数据清洗策略来清洗大 ...
- [Linux]yum下载慢!!
有全局代理,但是yum下载特别慢,怎么办? 确保/etc/yum.conf文件中代理配置的语法正确,包括代理服务器的地址和端口号,如下所示: proxy=http://your_proxy_serve ...