2017-08-02 19 views
-1

私は自分のアプリケーションの設計にAutoLayoutを使用しています。 HeaderViewについては、AspectRatioを使って高さを設定しました。アスペクト比の制約値をプログラムで変更する

メインビューにデータが含まれていない場合、HeaderViewの高さは0にする必要があります。データを追加するときは元のアスペクト比に設定する必要があります。

任意の制約の定数値を変更すると、アスペクト比を変更できますか?私は以下のコードを試しましたが、正しく動作していません。

@IBOutlet weak var constOptions_Height: NSLayoutConstraint! 
if arrData.count == 0 { 
    constOptions_Height.constant = 0.0 
} 
else{ 
    constOptions_Height.constant = 50.0 
} 
+0

私は定数ではなく乗数の値を変更する必要があると思います。 constOptions_Height.multiplier = cgfloatValue – Rishabh

+0

@Rishabh乗数は取得専用のプロパティです。 –

+0

次に、ビューの位置を変更するためにフレームを割り当てるのとほぼ同じように、乗数を変更するためにその制約を再作成することができます。あるいは単にストーリーボードの代わりにコードからその制約を作成します。 https://stackoverflow.com/questions/31334017/how-to-set-aspect-ratio-constraint-programmatically-in-ios – Rishabh

答えて

1

あなたは、2つの制約を付け、次のアプローチ

を使用することができます。 1つは縦横比用で、もう1つは高さ用です。

あなたは、高さを一定に、高さゼロを与えることができ、代わり

constOptions_Aspect.isActive = false 
constOptions_Height.isActive = true 

のように2をアクティブにします。

+0

実際、 'constOptions_Height'よりも優先度が低い場合、' constOptions_Aspect'を変更する必要はありません。 exapleの場合、 'constOptions_Aspect'が優先度' 999'を持ち、 'constOptions_Height'が優先度' 1001'を持っていれば、 'constOptions_Height.isActive = true'を設定すれば十分です。 – Sulthan

+0

はい。異なる優先順位でも同じことを達成できます。 –

+0

ありがとう@MohammadSadiq。 –

関連する問題