ローカライズを初めて行う場合、まずxcode上でビルドの前にクリーンする必要がある。
その理由は、ローカライズしている場合のバンドルでのリソースの探し方にある。
まずルートディレクトリを探し、それが無ければlprojディレクトリを探すため、
ルートにリソースが残ったままだと、ローカライズしたファイルの前にルートのリソースがヒットしてしまう。
結局、ローカライズされないことになってしまうので、
クリーンを忘れずに行うこと。
iOS6になって、shouldAutorotateとsupportedInterfaceOrientationsを
オーバーライドして画面の自動回転を制御するようになった。
ここで、自動回転が設定した通りにならない、というトラブルに見舞われたが、
どうもUINavigationControllerがルートに設定されていることに原因があるようだ。
そこで、UINavigationControllerのサブクラスを設定して
オーバーライドを行う形にしたところ、問題が解決した。
info.plistに問題があるケースや、
setRootViewControllerではなくaddSubViewで設定してしまっているケース
等もあるようなので、気をつけたい。
@interface rotateUINavigationController : UINavigationController
@end
@implementation rotateUINavigationController
-(BOOL)shouldAutorotate{
return YES;
}
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskPortrait;
}
@end
オーバーライドして画面の自動回転を制御するようになった。
ここで、自動回転が設定した通りにならない、というトラブルに見舞われたが、
どうもUINavigationControllerがルートに設定されていることに原因があるようだ。
そこで、UINavigationControllerのサブクラスを設定して
オーバーライドを行う形にしたところ、問題が解決した。
info.plistに問題があるケースや、
setRootViewControllerではなくaddSubViewで設定してしまっているケース
等もあるようなので、気をつけたい。
@interface rotateUINavigationController : UINavigationController
@end
@implementation rotateUINavigationController
-(BOOL)shouldAutorotate{
return YES;
}
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskPortrait;
}
@end
以前はInfoPlist.stringsのインスペクタから対応言語の追加を行っていたが、
現在はプロジェクトファイルのproject→infoから追加を行う。
現在はプロジェクトファイルのproject→infoから追加を行う。
UIViewControllerの派生クラスを作成する際に用意されるxibファイルは、
UIViewController派生クラスのインスタンスを作成する時ではなく、
そのクラスが管理するUIViewインスタンスを生成するもの。
UIViewController派生クラスのインスタンスを作成する時ではなく、
そのクラスが管理するUIViewインスタンスを生成するもの。
画像ファイルはUIImageの簡易コンストラクタを使って
UIImage* image = [UIImage imageNamed:@"camera.png"];
等とするのが一般的。
画像以外のアプリケーションバンドルに含めたファイルについては
NSBundleクラスを利用する。
UIImage* image = [UIImage imageNamed:@"camera.png"];
等とするのが一般的。
画像以外のアプリケーションバンドルに含めたファイルについては
NSBundleクラスを利用する。
