26

自動レイアウトは、それと同じくらい優れており、制約に夢中になっています。IB で設計されたポートレート モードを使用していますが、目的のランドスケープの向きが機能しません。

レイアウト

向きが横向きに変わると、UIImageView ブロック間の間隔が狭くなり、テキストの配置がSAMPLE TEXT右揃えに変わることに注意してください。

現在、それが機能するようにいくつかの制約を追加しました。ただし、UIImageView ブロック間のスペースを固定しておく必要があります。その結果、縦向きでは窮屈に見え、横向きではきれいに見えます。縦方向に均等に広げ、横方向に圧縮する必要があります(上の画像のように)。同様に、現在、私の制約によってテキストが表示されますが、テキストが画面の中央に配置されず、右揃えになりません。

これは、自動レイアウトでまったく可能ですか? もしそうなら、どのように?大変助かります。

4

3 に答える 3

12

これにはいくつかの方法があります。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) を削除し、回転時に末尾と centerY を追加することです。

于 2013-08-13T17:02:15.647 に答える