シミュレーターのバグではありません。
Xcode テンプレートには xib が含まれており、その xib はビュー コントローラーの最上位ビュー ( self.view
) であり、そのビューは iPhone 5 の画面に合わせてサイズ設定されています。
システムがビュー コントローラーに送信viewDidLoad
するとき、現在のデバイスの画面サイズに合わせてそのビューのサイズを変更していません。したがって、テキスト ビューのフレームは、iPhone 5 の画面のサイズに基づいています。
ビューに自動サイズ変更フラグを設定することで、これを修正できます。
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectInset(self.view.bounds, 10, 10)];
[self.view addSubview:textView];
textView.autoresizingMask = UIViewAutoresizingFlexibleHeight
| UIViewAutoresizingFlexibleWidth;
xib はデフォルトで autolayout を使用するように設定されているため、テキスト ビューとトップレベル ビューの間に制約を設定することで、システムにテキスト ビューのサイズを変更させることもできます。
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectInset(self.view.bounds, 10, 10)];
[self.view addSubview:textView];
textView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-10-[textView]-10-|" options:0 metrics:nil
views:NSDictionaryOfVariableBindings(textView)]];
[self.view addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"V:|-10-[textView]-10-|" options:0 metrics:nil
views:NSDictionaryOfVariableBindings(textView)]];
テキスト ビューをコードで作成する代わりに xib に配置する場合は、xib エディター (別名「Interface Builder」または「IB」) を使用して制約を設定できます。WWDC 2012の自動レイアウト ビデオを見ることを強くお勧めします。
- セッション 202 - iOS および OS X の自動レイアウトの紹介
- セッション 228 - 自動レイアウトをマスターするためのベスト プラクティス
- セッション 232 - 例による自動レイアウト