1

既存の iPad アプリ (XCode 4.6、iOS 6.2、ARC およびストーリーボード) があります。現在、縦向きモードでのみ App Store にあります。ランドスケープモードについていくつかリクエストがありました。残念ながら、すべての線などは、数学的に制御された CG 手法を使用して描画されます。ポートレートモードではこんな感じ。

ポートレートモード

ランドスケープ モードでは次のようになります。

横長モード

私の質問は、このアプリを両方のモードに変換するために必要な基本的な手順を提供する優れたドキュメントをどこで見つけることができますか?

4

1 に答える 1

1

数学的に制御されている場合、すべての座標を親ビューの寸法、特にデバイスの回転によって変化するプロパティ self.view.bounds を参照するのが最善の方法です。

次に、向きが変更されたときにインターフェイスを再描画する必要があります。これを行う良い方法は、メソッド内にあります。

-(void)viewWillLayoutSubviews

過去にCGメソッドを使用したカスタムビューがあった場合、最善の方法はすべてを境界に参照することです。このように、画面を回転させたり、iPhone で使用したりして画面サイズを変更すると、変更せずに動作します。

更新 (76.8, 512.0) にポイントがあると想像してください。これは正確に iPad で縦向き、幅の 10%、高さの 50% です。したがって、座標のすべてのペアについて、絶対数で使用する代わりに、親ビューの寸法の分数で置き換える必要があります。

// old drawing method
CGPoint oldPoint = CGPointMake(76.8, 512.0);

// new drawing method
CGFloat W = self.view.bounds.size.width;
CGFloat H = self.view.bounds.size.height; 
CGPoint newPoint = CGPointMake(0.1 * W, 0.5 * H)  // 76.8 = 0.1 * 768; 512 = 0.5 * 1024

この 2 番目のケースでは、方向を変更すると、境界が変更され、座標が新しい値を取得しますが、プロポーションは他の方向と同じで、水平方向に 10%、垂直方向に 50% になります。

あなたはアイデアを得る。

于 2013-08-29T19:12:37.763 に答える