自動レイアウトは、それだけでなく、制約に夢中になります。 IBで設計されたポートレートモードを使用していますが、希望する横長の向きが機能しません。
向きが横向きに変わると、UIImageViewブロック間の間隔が狭くなり、SAMPLE TEXT
は右揃えに変わります。
現在、私はそれが機能するためにいくつかの制約を追加しました。ただし、UIImageViewブロック間のスペースを固定する必要があります。その結果、UIImageViewブロックはポートレートでcr屈になり、ランドスケープでうまく表示されます。縦向きに均等に広げ、横向きに圧縮する必要があります(上の画像のように)。同様に、現在、私の制約はテキストを表示しますが、画面の中央に配置し、右揃えにしません。
これは自動レイアウトで可能ですか?もしそうなら、どのように?非常に感謝ヘルプ。
これにアプローチする方法はいくつかあります。 1つの方法は、3つの画像ビューをUIViewで囲むことです。上部と下部のイメージビューの制約をそれぞれ上部と下部に与え、中央の制約にcenterY制約を与えます。この囲まれたビューに固定された高さと幅を与え、コントローラーのビューの上部に制約を与えます。この囲まれたビューの高さの制約に対してIBOutletを作成し、回転時に変更します。以下の例では、縦に350の高さを与えました:
-(void)updateViewConstraints {
[super updateViewConstraints];
if (self.view.bounds.size.height < self.view.bounds.size.width) {
self.heightCon.constant = self.view.bounds.size.height;
}else{
self.heightCon.constant = 350;
}
}
ラベルに関しては、最も簡単な方法は、持っている制約(bottomとcenterX)を削除し、回転時に末尾と中央Yを追加することです。
はい、自動レイアウトで実行できます。ビュー間の間隔を方向に応じて増減させる場合は、制約に(等しいではなく)より小さいまたは等しい、またはより大きい、または等しい関係を使用して、距離を拡大または縮小できます。
それで遊んで、あなたが欲しいものを手に入れることができるはずです。
はい、自動レイアウトでこれを行うことは間違いなく可能です。回答として投稿するには長すぎると思われる一連の手順を経て、ImageView間の間隔を維持し、テキストの配置を同じに保つことができます。
基本的に、方向を変更したときに間隔が自動的に圧縮されないように、各ImageViewの角を固定し、いくつかの制約を削除する必要があります。
これを行う方法の完全な説明(あなたが求めていることはほぼ正確です) このチュートリアルで説明されています 。ページのほぼ半分にあります。
これがあなたが探していたものであることを願っています。