私はiOS 9 & 10アプリを持っています。このアプリは、特定のコントロールを表示(または非表示)するためにスライドするウインドウの下部に沿って、小さな「トレイ」UIViewを備えています。デフォルトでは、トレイは完全に表示され(「スライドアウト」)、ユーザーはすべてを見ることができます。右端にボタンがあり、トレイを左にスライドさせるとタップすることができます。これにより、トレイがほとんど非表示になります。なぜなら、左に画面が外れているためです。 (最も右の20ポイントは、ユーザーがスライドイン/アウトするためにタップできる「親指」であるため、トレイをスライドさせたときにサムがトレイの唯一の部分です。)[NSLayoutConstraint constraintWithItem:]ができるのに、Interface Builderが制約に対して負の倍数を設定できないのはなぜですか?
私はInterface Builderを使って2つの異なる制約を定義することです。一度に1つだけアクティブになるように単純に切り替えます。例えば、2つの制約があってもよい:
trayOutConstraint:
:+ 0 //結果== 0trayInConstraint(* 1 superview.leading)
trayView.leading =
(例えば)+ 20 //結果== -trayView.leading =(superview.trailing * -1)
それは(編集:私は、ストーリーボードのデフォルトの制約を無効にし、私の新しい制約を追加しているかを示すために拡張さ):私はそうのように、プログラムでtrayInConstraintのための制約を作成できることが判明し
// Disable the default constraint (in the storyboard) [[self trayTripOutLeadingConstraint] setActive:NO]; // Create the new constraint (add to an array by itself) NSLayoutConstraint *newConstraint = [NSLayoutConstraint constraintWithItem:(id)trayView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:(id)[trayView superview] attribute:NSLayoutAttributeTrailing multiplier:-1 constant:20]; NSArray *newTrayConstraintsArray = [[NSArray alloc] initWithObjects:newConstraint, nil]; // Remove any existing constraints array and use the new one [[self view] removeConstraints:[self tripTrayConstraints]]; [self setTripTrayConstraints:newTrayConstraintsArray]; [[self view] addConstraints:newTrayConstraintsArray];
しかし、場合私はInterface Builderでそれを作成しようとしていますが、乗数を1.0以外に設定することはできません。 (タイピング他の値は、単にそれが「1」にリセットすることが強制されます。)私は、Appleのドキュメントに表示さ
あなたは 場所属性を持つ非同一の乗数(1.0以外の値)を使用することはできません。
なぜ私はコードではなくIBで作成できますか?
(他の人には役に立たないかもしれない:私はまた、倍数が0だったがプログラムでもIBでもできない制約を作成したいと思った。私は、 0.000001のような非常に小さいものを乗算器として使用して0.0を指定します)。
新しい制約をどのように割り当てて、ここに表示できますか? – CodeChanger
新しい制約を作成して割り当てるコードを含めるように質問を編集しました。しかし、それは本当に私の質問ではありません。私の質問は、どのように希望の制約を作成するコードを作成することではありません。上記のコードに示すように、私はすでにそれを知っています。代わりに、私の質問です:なぜ私は "-1"の値を割り当てることができません "乗数"のInterface Builder内で? – Kenster999