アップルのマニュアルで本当に重要なことを見逃していたので、この問題が発生したと思います。
私が何を持ちたいのか、何を手に入れるのか、何をするのかを説明します。
前文:
- 私の仕事の目標は、ログイン画面を持つアプリです。この画面は、後でフェードアウトするために、他のすべてのビューの上に配置する必要があります。したがって、この場合、「唯一のメインウィンドウガイドライン」を正しく理解していれば、すでにルールを破っていると思います。
私が欲しいもの:
- 普遍的なアプリケーションを持っている √ チェック
- iPad専用のUIInterfaceRotationを持つユニバーサルアプリケーションを持っている √ チェック
- 起動時に uiinterfaceorientation または uideviceorientation に関する問題が発生しないため、すべてのビューを適切に配置するために数回回転させることなく、すべてのビューを適切な寸法で表示できます。- 未検査
私が得るもの:
- インターフェイスビルダーのビューからのデフォルトの向きである横向きでアプリを起動すると、完全に整列し、必要なものをすべて回転させることができます。完璧で、完璧なままです。
- アプリを縦向きで起動すると、横向きのビューが画面上を飛び回るのが見えます-毎回異なるペースで-少なくともそうです。アプリを前後に回転させると、すべてが必要に応じて整列します-また、完全に望み通りです。
私がやること:
- すべての回転関連の設定の 99% はインターフェイス ビルダーで行われます。現在、回転が完了したときに背景画像を変更するための did-change-methods がいくつかあります。
デバイスがその向きを認識した後に画面を作成しても、これにつながることに気付きました。
言い換えれば:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[self addEventListener:UIDeviceOrientationDidChangeNotification sel:@selector(buildScreen)];
....
注: addEventListener は、簡単に処理できるように作成した小さな通知カテゴリです。ここには魔法はありません。
ビルド画面で、すべてのサブビューを追加します。最初は、バックグラウンドの実際の画面で、この画面はサブビューとしてログインを取得します(メインウィンドウ自体にログインを追加しても状況は同じであるため、これは問題ではありません)。
したがって、この場合、次に何をすべきか本当にわかりません。方向調整がセットアップされると、IB で定義されているようにすべてが完全に適合します。
ヘルプ、リンク、コードなど、大歓迎です。どうもありがとうございます!これを検索してみましたが、同様の問題がたくさん見つかりましたが、解決策はありません。まったく同じ質問をしているように見える場合は少し申し訳ありませんが、本当にそうする場合は大きな質問です。
よろしくお願いします