5

私はアプリ ストアで 5 つ星に近い評価のアプリを持っていますが、iOS 6 が登場すると、アプリのメイン ビュー階層の一部のビューが点滅し始めました。これは、ストアにあったアプリ (iOS6 が出たときに削除しました) とシミュレーターで発生します。

Xcode でこれをデバッグするために、約 14 時間かけて 100 のことを試しましたが、何の牽引力も得られません。サブビューは、グレムリンがそれぞれの可視プロパティをランダムにオフおよびオンに設定するように、すべてが正常である長い期間の間に 1 秒あたり最大 10 回、消えて再表示されます。

メイン インターフェイスは、ユーザーが回転できるダイヤルです。ここでは、レイヤーで 3D 変換を使用して回転させます。私が見つけた唯一のパターンは、ダイヤルが特定の個別の位置に回転すると、4 つの消えるサブビューのうち 3 つが 1 つとしてロックされているかのように一緒に消えることです。

4 番目に消えるサブビューは静止画像である必要があり、識別可能なパターンなしで点滅しています。

これをデバッグする方法についての考えやヒントがあれば幸いです。これはメモリ警告ではなく、追加の [setNeedsToDisplay] を実行しても効果がないようです。私は、Apple が iOS6 で何かを壊したのではないかと考え始めていますが、これらの問題について話している人を他に見つけることができません。


メイン ビューのサブビューと CALayer の階層の内訳は次のとおりです。

  1. 私の階層には、問題のない 2 つの基本 CALayer が含まれています。
  2. その上には、非常に大きなカスタム UIView (drawRect を使用) と大きな UIImageVIew があり、下のものを特定の位置に回転させると、常に一緒に点滅します。一番下だけ回転しています。
  3. その上には点滅しないカスタム テキスト描画 UIView があります。
  4. その上には小さな赤いピン グラフィック UIImageView があり、上記の 2 つのビューと同時に点滅します。これはバニラの UIImageView です。変換、サブクラス、またはカスタム描画コードはありません! それでも、まだ同じ点滅をしています。
  5. その上には、常に動作しているように見える非表示の UIButton があります。
  6. その上には、他の 3 つの「リンクされた」レイヤーの回転ベースの点滅とは無関係に、絶えず点滅する小さなグラフィックである UIImageView があります (リンクされていると言うのは、それらがすべて一緒に消えるのが好きだからです)。
4

2 に答える 2

3

(これは実際には答えではありません。ラットの答えに対する返信ですが、コメントする評判ポイントはまだありません)

はい、明示的に zPositions を設定すると修正されるようです。はい、それは奇妙です。私もこの問題に遭遇し、ここでブログを書きました: iOS 6 Rendering Bug: 3D-Rotation Causes Layers to Render Without Respect for View Hierarchy . これは、iOS 6 で導入されたレンダリング バグのようです。ブログには、私が Apple に提出したバグの Open Radar バージョンへのリンクと、バグと zPosition 修正を確認するために実行できるサンプル プロジェクトがあります。

于 2012-09-26T17:38:41.527 に答える
2

Try manually setting your view layers z-property to ensure the hierarchy is what you need.

于 2012-09-24T02:45:52.960 に答える