プログラムで自動レイアウト制約を使用してカスタムUITableViewセルをレイアウトし、セルサイズを正しく定義しています tableView:heightForRowAtIndexPath:
これは、iOS6にうまく働いていますし、それはありませんルックにもiOS7に罰金を
しかし、iOS7でアプリを実行すると、コンソールに次のようなメッセージが表示されます。
Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
2013-10-02 09:56:44.847 Vente-Exclusive[76306:a0b] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0xac4c5f0 V:|-(15)-[UIImageView:0xac47f50] (Names: '|':UITableViewCellContentView:0xd93e850 )>",
"<NSLayoutConstraint:0xac43620 V:[UIImageView:0xac47f50(62)]>",
"<NSLayoutConstraint:0xac43650 V:[UIImageView:0xac47f50]-(>=0)-[UIView:0xac4d0f0]>",
"<NSLayoutConstraint:0xac43680 V:[UIView:0xac4d0f0(1)]>",
"<NSLayoutConstraint:0xac436b0 V:[UIView:0xac4d0f0]-(0)-| (Names: '|':UITableViewCellContentView:0xd93e850 )>",
"<NSAutoresizingMaskLayoutConstraint:0xac6b120 h=--& v=--& V:[UITableViewCellContentView:0xd93e850(44)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0xac43650 V:[UIImageView:0xac47f50]-(>=0)-[UIView:0xac4d0f0]>
そして確かに、そのリストには私が望まない制約の1つがあります。
"<NSAutoresizingMaskLayoutConstraint:0xac6b120 h=--& v=--& V:[UITableViewCellContentView:0xd93e850(44)]>"
のtranslatesAutoresizingMaskIntoConstraints
プロパティcontentView
をNOに設定できない=>セル全体がめちゃくちゃになる。
44はデフォルトのセルの高さですが、テーブルビューのデリゲートでカスタムの高さを定義したので、セルのcontentViewにこの制約があるのはなぜですか?何が原因でしょうか?
iOS6ではそれは起こっておらず、iOS6とiOS7の両方ですべてが正常に見えます。
私のコードは非常に大きいため、ここには投稿しませんが、必要に応じてペーストビンをリクエストしてください。
セルの初期化で、私がそれをどのように行っているかを指定するには:
- すべてのラベル、ボタンなどを作成します
translatesAutoresizingMaskIntoConstraints
プロパティをNO に設定しましたcontentView
セルのサブビューとして追加します- に制約を追加します
contentView
これがiOS7でのみ発生する理由を理解することにも興味があります。