web-dev-qa-db-ja.com

自動レイアウトの比例スケーリングビュー

私はこのトピックについていくつかの質問と回答をすでに見つけましたが、これをうまく機能させることができません。

Scaling

青い長方形は、テストラベルとギアの画像ボタンを含むUIViewです。赤いものは2番目のUIViewです。

私がしたいことは、青いバー(UIView)のサイズを大きくして、画面のサイズを大きくすることです。これにより、ラベルと設定ボタンがスケーリングされ、赤のUIViewは高さが小さくなり、青になります。 UIViewは大きくなる可能性があります。したがって、基本的に問題は、さまざまな画面サイズに合わせてUIViewを比例的にスケーリングする方法です。

アスペクト比の制約、高さの制約(より大きい/より小さい)を使用してみましたが、希望する効果が得られません。

ありがとう。

15
Ertay Shashko

高さと幅を比例させてみてください。等しい高さまたは等しい幅、あるいはその両方の制約を作成する必要があります。次に、制約をダブルクリックし、乗数を変更します。たとえば、最初のアイテムの幅を2番目のアイテムの20%、200%の2.0にする場合は、0.2を変更します(幅が2倍であることを意味します。要件に応じて比例して増減するenter image description here

19
Asadullah Ali

それには2つの方法があります。

1。比例制約:

ただし、1つのビューに比例する高さを設定すると、画面サイズの小さな変化ごとにビューが変化します。たとえば、ビューが4 "から4,7"に少し大きくなる場合がありますが、それが悪い考えであるとは限りません。

その機能を使用するには Asadullah ALiによる回答を確認してください:)

2。サイズクラスを使用する:

xcode 6を使用している場合は、サイズクラスを使用して、画面サイズのみの制約を追加できます。使用するのは難しくありません Apple Documentation を確認してください。

この機能では、ストーリーボードのクラスを適切なサイズにする必要があります。

enter image description here

その後、好きなようにビューコントローラーを設定し、クラスの1つだけにルールを追加できます。

enter image description here

xcodeに「画面サイズが5、5であれば、少なくともこのルールを使用する」と伝えることができます。

特定のサイズクラスの制約を追加するには、最初にサイズクラスを選択してから、通常は制約を追加する必要があることに注意してください。サイズクラスを選択すると(サイズクラスコントロールでチェックインできます)、Xcodeはそのクラスにのみ制約を追加します。

EDIT 1スケーリングフォントなどに問題がある場合たとえば、ラベルのフォントサイズをスケーリングするためだけにサイズクラス機能を使用することもできます。サイズクラス機能をアクティブにした後、このオプションをクリックすると、このオプションが見つかります。

How add a font size for one size class


私はあなたの問題について私が知っているすべてをあなたに話すことを好みますが、あなたのケースでは個人的に私は最初の解決策を使用します:あなたのビューは画面サイズが何であっても動的に変更できます。

あなたは最高の比例パーセンテージを見つける必要があるだけです:おそらく10%程度に設定できるので、最初のアイテムに青いビュー、0.1乗数に2番目のアイテムに赤いビュー

8