1

iPhone SDK の向きに問題があります...

「保持」View ControllerをnavigationControllerにプッシュします。holdViewController は、viewDidLoad を使用して、navigationController ナビゲーション バーを表示し、フリップ ボタンとフリップボタンのセレクターを追加します。次に、TableView を含む UIView を表示する UIViewAnimationTransitionNone を使用してサブビューを追加します。フリップ ボタンをクリックすると、保持されているビュー コントローラーは、読み込まれたサブビューを削除し、別のサブビューに置き換えます。このサブビューには、テーブルビューを含むビューも含まれており、フリップ アニメーションを使用して変換されます。問題は、向きを反転して変更するときに発生します。横向きモードでフリップすると、最初はフリップと回転の両方が機能しているように見えますが、フリップされたビューは縦幅に「トリミング」されていますが、実際には横向きで表示されますが、回転しても修正されません。回転して縦向きに戻し、もう一度裏返します。ホールディングビューが向きの変更を登録していないように見えますが、実装したとおりであることはわかっています

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];

3つのView Controllerすべてで、それぞれに対してorientationChanged関数が呼び出されているのがわかります。

3 つのビューコントローラーはすべて、viewDidLoad で自動サイズ変更を設定しています

self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 

そして私も実装しました

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
 return YES;
}

何が起こっているのか、またはもっと重要なことに、それを修正するために何ができるのか、誰かが何か考えを持っていますか?

どうもありがとう

4

1 に答える 1

3

サブビューを追加する際にも同様の問題がありました。横向きのときにサブビューがトリミングされていました。サブビューが正しく塗りつぶされるように、追加する前にサブビューのフレームを設定する必要がありました。

私の問題を修正したコードは次のとおりです。[subcontroller.view setFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];

于 2011-01-05T05:22:56.603 に答える