8

tableView xib のカスタム セルで autoLayout を使用すると、次のエラーが発生します。

iOS 6 シミュレータで実行する場合、 CustomCells の -layoutSubviews の実装は super を呼び出す必要があります

Assertion failure in 

-[CustomCells layoutSublayersOfLayer:], /SourceCache/UIKit_Sim/UIKit-2372/UIView
     *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Auto Layout still required after executing -layoutSubviews. CustomCells's implementation of -layoutSubviews needs to call super.'
    *** First throw call stack:

iOS 5 シミュレーターで実行する場合

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'The NIB data is invalid.'
*** First throw call stack:

臨時雇用者修正:

カスタムセルでautoLayoutを無効にしている場合、正常に機能しています。ただし、この場合、向きの処理は適切ではありません。助けてください。

4

2 に答える 2

1

iOS 5.1 以前のバージョンは AutoLayout と互換性がありません。これは iOS 6.0 以降専用です。

ストーリーボードを使用していると仮定して、AutoLayout を使用したいが 6.0 より前の iOS バージョンとの互換性を維持したい場合は、iOS 6 用と iOS 5 (またはそれ以前) 用の 2 つのターゲットを作成する必要があります。それぞれに、個別のストーリーボードを設定します。1 つは AutoLayout が有効な場合 (iOS 6 の場合) で、もう 1 つは有効でない場合 (iOS 5 の場合) です。

AutoLayout のベスト プラクティスと iOS 5 との下位互換性に関する StackOverflow スレッドは次のとおり です。iOS 5 との下位互換性を維持しながら iOS 6 で自動レイアウトを有効にする

私の経験では、下位互換性が必要な場合に AutoLayout を使用する価値はありません。ストーリーボードを使用している場合、2 つのターゲットと 2 つのストーリーボードを同期させるのはメンテナンスの頭痛の種です。ストーリーボードを使用していない場合は、iOS 5 と iOS 6 用に別のコードが必要になり、テストと更新に時間がかかります。

于 2012-12-07T21:02:53.890 に答える