3

1 つの xib で iPhone4/iPhone6 の画面をカバーするために、画面サイズに依存するサイズ (この場合は高さ) を持つビューが必要です。だから私は ListView を取り、それを全画面表示にしたくないが、上下にスペースを固定しているとしましょう。その高さは次のようになります。

screen_height - (space_above + space_below) 

Interface Builder では、2 つの垂直方向のスペース制約を設定し、ListView の高さの制約を削除して、親ビューとこの 2 つのスペース制約によって高さが決定されるようにすることもできます。

シミュレートされたメトリクスに Freeform を設定すると、ドラッグしてルート ビューのサイズを変更し、制約が機能していることを確認できます (ListView のサイズが適切に変更されます)。

問題:

ただし、シミュレーターでアプリケーションを実行すると、Interface Builder の最後の位置のようにすべてが固定されているように見えます。制約に従ってレイアウトが機能しない原因は何ですか?

シミュレートされたメトリックを Retina 3.5 または 4 に変更すると、Xcode は制約を削除し、固定サイズの制約に戻ります。

4

2 に答える 2

0

問題は、画面のサイズをとらないルートビューです(想定されるもの以外)。

おそらく最善の解決策ではありません:

[self.view setFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];

ただし、ビューを適切なサイズにし、制約を機能させます。

于 2012-09-25T19:07:18.327 に答える
0

これが欲しいですか?

autoLayout ポートレート

autoLayout ランドスケープ

はいの場合は、画像を拡大し、そこから制約に従います。autoLayout を操作すると面白すぎませんか。

于 2013-03-20T08:56:13.997 に答える