

TableViewなど内容に応じてViewのheightが変化するものにAutoLayoutに対応させるべく、  
制約をつけたいが、どのように制約すればよいかわかりません。  
現状、最低220pxなので[Greater than or Equal 220px]の制約をつけているが、  
[inequality constraint ambiguity]の警告が発生します。動作に問題はありません。  
警告をなくすにはどうすればよいでしょうか。


CC BY-SA 3.0
2015-02-18T07:42:06.413
6688
2015-07-25T11:47:01.143
8060
question
ios autolayout
TableViewなどの可変のViewに制約をつける


回答ではないですが。  
このような場合、

I UITableView は、別のUIViewの上に、storyboardかxibの上で貼られている。  
II UITableView は、UITableViewControllerとペアで使われていて、上位のContainerViewの中に含まれている。

の２つのケースがあり得ます。  
で、制約子ですが、制約子もUI部品として、outletを作ることができます。Ctrlを押しながら、マウスでドラッグする要領で。そうすると、  
IBOutlet NSLayoutConstraint *tableHeightConstraint;

というような宣言が、file's ownerのコントローラファイルに、出来ます。

詳細は、NSLayoutConstraintのクラス・リファレンスを参照する必要がありますが、  
これには、@property (getter=isActive) BOOL active というプロパティがあり、  
その制約子の有効・無効をコントロールすることが、可能です。

ですから、この画面のViewControllerソースのviewWillAppearの中で、セル数5個以下の場合は、制約子高さ220を有効とし、5個以上の場合は、制約子を無効にするか、別の内容にするか  
すれば、どうでしょうか。  
もちろん、storyboardのframeが、どう貼られているにもよるのですが。


CC BY-SA 3.0
2015-03-27T08:33:27.387
8483
2015-03-27T08:33:27.387
75
6688
answer