1

私のアプリ (iOS 5 以降を対象とし、App Store 用に ARC とストーリーボードを使用) は、いくつかの回転変換を使用します。通話中のステータス バー (進行中の電話やマイクの録音がある場合など) によって、ビューが変換の説明を超えて変更されるバグがあります。問題を診断するために、ビューの変換で再生する簡単なテスト アプリ* を作成しました。

最初は (シミュレーター 5.0 と 6.1、およびハードウェア 6.1 で再現)、次のようになります。

ここに画像の説明を入力

20 度回転した後:

ここに画像の説明を入力

それでも大丈夫!しかし、通話中のステータス バー (command-T) を切り替えると、奇妙なことが起こります。

ここに画像の説明を入力

わかりました。通話中のステータス バーをオフにすると元に戻るかもしれません。

ここに画像の説明を入力

災害!ビューの変換をリセットしてみましょうCGAffineTransformIdentity

ここに画像の説明を入力

ああ、私は何に夢中になったのですか?!

とにかく、私はCGAffineTransformsとQuartz 2D全体に不慣れなので、誰かがなぜこれが起こっているのか教えていただければ幸いです. コードはGithub で入手できます* ざっと調べたい場合。

*コードがソリューションで更新されていることに注意してください。

4

1 に答える 1

1

これは、通話中のステータスバーを切り替えると、ビューフレームが変更され、それに応じてサブビューのサイズが自動変更されるために発生します(サブビューの自動サイズ変更に設定されている場合)。変換されたビューに柔軟なマージンがある場合、上のスクリーンショットに示すように歪む可能性があります。そのように歪まないようにするには、4本の支柱すべてをオンにします。

于 2013-02-14T00:30:18.540 に答える