それを解決するためにはユーザーの言語環境を見ないといけないんだけど、それをifで分けたら解決できた。
frame = self.view.frame; float version = [[[UIDevice currentDevice] systemVersion] floatValue]; CGRect statusFrame = [[UIApplication sharedApplication]statusBarFrame]; CGRect navFrame = self.navigationController.navigationBar.frame; // NSLocalizedStringのEnglishとJapaneseどちらが適用されるかを調べる NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; NSArray *languages = [ud objectForKey:@"AppleLanguages"]; int enIndex = [languages indexOfObject:@"en"]; int jaIndex = [languages indexOfObject:@"ja"]; float offset = (enIndex < jaIndex ? navFrame.size.height + (version < 7.0 ? 0 : statusFrame.size.height) : 0); frame = CGRectMake(0, 0, frame.size.width, frame.size.height - offset);こんな感じにわけたら、うまく解決できた。
多分もっといい方法があると思うんだけどね。
あと、これでわかったことなんだけど、NSLocalizedStringはlanguagesで一番最初の言語に対応する文字を返す。