willrotatetointerfaceorientation メソッドで次のコードを使用しています。
if(UIDeviceOrientationIsLandscape(toInterfaceOrientation))
{
NSLog(@"willRotateToInterfaceOrientation landscape");
self.textFieldResult.frame = CGRectMake(146, 210, 97, 31);
self.operationLabel.frame = CGRectMake(73, 210, 120, 21);
}
else if (UIDeviceOrientationIsPortrait(toInterfaceOrientation))
{
NSLog(@"willRotateToInterfaceOrientation Portrait");
self.textFieldResult.frame = CGRectMake(305, 134, 97, 31);
self.operationLabel.frame = CGRectMake(82, 138, 120, 21);
}
横向きから縦向き、またはその逆のように一度回転すると、これはうまく機能します。しかし、縦向きから逆さまに変更すると、ビューの向きが乱れます! コントロールはelseブロックに入っていますが、方向は本来あるべきものではありません.
私が想定しているのは、CGRect の場合、ビューの原点が親ビューの左上隅に対して指定されているということです。これはウィンドウそのものです。
さらに、ここで指定した座標は、絵コンテで見たものとはまったく異なります。つまり、ほぼ 2 倍か半分です。viewWillAppear メソッドで同じコード (上記と同じ) を使用したい場合は、ビューの同じ配置に別の座標セットを使用する必要があります。この座標は、ストーリーボードに表示されるものと似ています。
CGRect の動作とそれに対応する関数については、明確でない可能性があると思います。