これについてはすでにいくつかの質問がありますが、満足のいく答えはありません。可能な限り単純な例を使用して、フレームと境界が間違っているように見える理由を正確に知りたいです。誰かがそれを処理する適切な方法を教えてくれます...
ストーリーボードなしでシングル ビュー アプリケーションを作成し、ランドスケープのみのサポートにチェックを入れます。次に、didFinishLaunching メソッドで:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
ViewController *vc = [[ViewController alloc] init];
self.window.rootViewController = vc;
[self.window makeKeyAndVisible];
return YES;
}
そしてView Controllerで:
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor redColor];
}
- (void)viewDidAppear:(BOOL)animated
{
NSLog(@"%.1f,%.1f",self.view.frame.size.width,self.view.frame.size.height);
}
次に、出力は 768.0,1024.0 です。これは、横長のサイズの画面が赤色でいっぱいになっているにもかかわらず、明らかに間違っています。そのため、サブビューの配置やサイズ変更を self.view.frame または self.view.bounds に頼ることはできません。
このような問題を回避する最新の「適切な」方法は何ですか? (ペン先やストーリーボードを使用せず、幅と高さをハッキリと交換しません)