2

縦向きと横向きのビューで自動レイアウトの制約を見つけようとしています。ポートレートでは、320x200 ピクセルのコンテナー ビューがあります (ただし、どのビューでも構いません)。電話を横向きに回転させたとき、そのコンテナー ビューを 480x320 で画面いっぱいに表示したいと思います。

現在、私はこれを完全に IB で行っており、今のところその方法を維持しようとしています。ビューを希望どおりにサイズ変更するように設定しようとすると、青と紫の制約アイコンが表示されて苦労します。

WWDC の自動レイアウト ビデオを見て、他のビューで自動レイアウトが機能するようにしましたが、この一見単純な変更を行うことができません。

どんな助けでも大歓迎です。ありがとうございました。

4

2 に答える 2

2

2012 年の WWDC ビデオ 228 - Mastering Auto layout で、彼は次のようなことを示しました。

for (UIView *aView in [yourViewController subviews]) {
if ([aView hasAmbiguousLayout]) {
    NSLog(@"View Frame %@", NSStringFromCGRect(aView.frame));
    NSLog(@"%@", [aView class]);
    NSLog(@"%@", [aView constraintsAffectingLayoutForAxis:1]);
    NSLog(@"%@", [aView constraintsAffectingLayoutForAxis:0]);

    [aView exerciseAmbiguityInLayout];
 }
}

それを試して、あいまいなレイアウトがないかどうかを確認してください。もちろん、ローテーション後にこれを行うと、すべてが正しくありません。

それでも何も生成されない場合は、特定のビューでconstraintAffectingLayoutForAxisメソッドを使用するだけで、変更を許可しない制約が表示されます。

ほとんどの場合、優先度が高すぎる制約を減らす必要があります。

于 2013-01-05T04:56:15.663 に答える
0

私は不等式を使わなければなりませんでした。たとえば、縦方向のテキスト領域の幅は 100 にする必要がありますが、横方向の幅は 100 より大きくする必要があります。すでに私のためにそれを横に引っ張るために、他の制約が設けられています。ランドスケープモードも有効にしました。回転すると、4 行のテキストが非常にスマートに 2 行にリフローされます。

于 2012-09-17T20:41:58.487 に答える