Interface Builderの「幅は高さに等しい」制約


92

「正方形」制約を作成する方法が見つかりません。つまり、Interface Builderで「幅が高さと等しい」ということです。そのような制約をプログラムで追加することは可能だと思います。IBでできることはありますか?多分私はそれを見ないだけですか?それはささいなことのようですが、それを見つけることができません。


ピーター・アモンがWWDC'12で「インターフェイスビルダーにできるだけ依存する」について話したのを覚えています。なんて皮肉だな。
DemoniacDeath 2013年

4
ええ、私はまだレイアウト制約の実装から欠けていることがいくつかあると思います。彼らは私たちにほとんどのパラメーターへのアクセスを与えたようですが、乗数はそうではありません。それは多くのことに役立ちます。
rdelmar 2013

しかし、それはどんどん良くなっています!自動レイアウトが導入されてから3年も経っていないということですが、私の観点から見ると、サポートは現在、本当に優れています。
Lukas Kubanek、2014

回答:


187

Xcode 5.1b5を更新する

幅は高さに等しい

Ctrlキーを押しながらクリックしてビューからドラッグし、ポインターがビューの上にあるときに離します。「アスペクト比」を選択します。最初のアイテムと2番目のアイテムがビューである場所に制約が作成されます。


Xcode 5.1より前

幅/高さエディターには、別のプロパティに関連付けたり、比率を設定したりするためのフィールドがないため、これはできません。

幅の制約

したがって、Interface Builderで次のコードを表現することはできません。

CGFloat ratio = 1.0;
NSLayoutConstraint *constraint = [NSLayoutConstraint
    constraintWithItem:myView
    attribute:NSLayoutAttributeWidth
    relatedBy:NSLayoutRelationEqual
    toItem:myView
    attribute:NSLayoutAttributeHeight
    multiplier:ratio
    constant:0];
constraint.priority = 1000;
[myView.superview addConstraint:constraint];

1
最新のアップデートをありがとう。Xcode 5.1ベータ5では、実際にIBでアスペクト比制約を設定できますが、プロジェクトをコンパイルしようとすると、次のエラーが発生します。5.1以前のXcodeバージョンでのアスペクト比制約。ですから、最終的な5.1バージョンを待つ必要があるかもしれません。@Janoも同じですか?
Lukas Kubanek、2014

はい、XIBへの変更には下位互換性がありません。5.1で編集すると、以前のバージョンに戻すことはできません。
Jano、2014

それで、xibをコンパイルできますか?Xcode 5.1ベータ5でも動作しません。
Lukas Kubanek、2014

1
@ onmyway133は、2つのビューの間に制約を作成し、乗数を1:2に設定します。
Jano、2014年

3
Xcode 7では、Ctrlキーを押しながらビューからドラッグしてクリックし、上部にリリースして、アスペクト比を選択します
inorganik

1

画像のように、UI要素に新しい制約、アスペクト比を1:1に追加してください。

アスペクト比を1:1に設定します


0

開始するには、ボタンからそれ自体に対角線上にコントロールをドラッグします。幅と高さの制約を追加できるコンテキストメニューが表示されます。それぞれをShift +クリック; 制約を追加したことを示すチェックマークが表示されます。(両方を追加する前にダイアログを誤って閉じてしまった場合は、問題ありません。ドラッグ手順を繰り返して、もう一方を設定してください):

ここに画像の説明を入力してください

最初に追加されたとき、これらの制約はボタンの現在の幅と高さを引き継ぐので、各制約を調整して、より適切な値にする必要があります。画像は正方形ですが、一度に1つずつ実行する必要があるため、両方の制約で同じ定数値を使用してボタンのサイズを均等に変更してください。制約をダブルクリックして、定数フィールドに小さい値を入力します。

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.