2012-10-08 10 views
5

私はUILabelを持っています。これはプログラム的に行う必要があります。私は(LOCNAMEがUILabelである)、それを中心に、以下の制約を追加しようとしました:ios 6:自動レイアウト制約を使用して垂直方向にUILabelを配置

[cell addConstraint:[NSLayoutConstraint constraintWithItem:cell 
attribute:NSLayoutAttributeCenterY relatedBy:0 toItem:cell.locName 
attribute:NSLayoutAttributeCenterY multiplier:1 constant:0]]; 

これは私が得る結果である:

enter image description here

それは、その心のように見えますが、多分変更しますUILabelまたは何かの高さ?

ここでIBのビューコントローラです:

enter image description here

は、どのように私はプログラム的に垂直方向のセンタリングを達成することができますか?

+0

これはプログラムで行う必要があるのはなぜですか? IBを使用して別のセルを設計し、それを隔離するだけの理由は何ですか? – slf

+0

ありがとう!それは私の特定のケースのためのトリックを行います。私たちが細胞を扱っていないなら、あなたはどうしますか?私たちは、汎用的なUIViewのラベルをプログラム的に中央に置くことを試みていたとします。 –

+0

これは最善の方法ではないかもしれませんが、おそらく高さを計算して、フレームのCGRectが何であるべきかを計算するために少し計算します。 – slf

答えて

0

センターの後にUIlabelの高さに達しようとしますか?

またはuは、プログラムでカスタムセルのラベルの場所を再割り当てできます。

3

この点について: centering制約に加えて、cell.locNameの高さの制約を追加して、高さを高くします。

[cell.contentView addConstraint: 
    [NSLayoutConstraint constraintWithItem:cell.locName 
           attribute:NSLayoutAttributeHeight 
           relatedBy:NSLayoutRelationGreaterThanOrEqual 
            toItem:nil 
           attribute:NSLayoutAttributeNotAnAttribute 
           multiplier:1 
            constant:20]]; 
2

おそらく、すでにセル内の他の制約条件を満たす可能性があります。制約を追加しても、他の制約はなくなりません。例えば、これと新しいセンタリング制約を満たすために、上部と下部のラベルの間にスペーシングがある場合、トップラベルの高さは縮小する必要があります。

これらの他の制約のアウトレットを作成し、それらを削除して中心のデザインにする必要があります。

関連する問題