36

これは簡単に達成できるものでなければならないので、何かが欠けていることはわかっています。

私の問題は、「読み込み画面」(スプラッシュの直後に表示される画面) に、3.5 インチと 4 インチのサイズの画面の 2 つの異なる画像を持つ UIImageView があることです。その画像の特定の場所に、UIActivityIndi​​cator を 1 つ配置して、アプリがバックグラウンドで何かを読み込んでいることをユーザーに伝えます。その場所は両方の画像で同じではありません.一方が他方よりも明らかに高いため、アプリがiPhone 5かどうか。

Autolayout を使用しない場合は、ビューの frame.origin.y を (たとえば) 300 に設定し、ViewController の viewDidLoad メソッドで、アプリが iPhone 5 で実行されているかどうかを確認します。 d 値をたとえば 350 に変更します。Autolayout を使用してこれを行う方法がわかりません。かなり単純でなければならないと思います。

4

5 に答える 5

1

UI オブジェクトの位置を管理する自動レイアウトの基本的なツールは、制約です。拘束は、2 つのビュー間の幾何学的な関係を表します。たとえば、「プログレス バーの右端はラベルの左端に 40 ポイントの空きスペースで接続されている」という制約があるとします。</p>

これは、AutoLayout を使用すると、UIDevice のモードに基づいて条件付きの位置設定を行うことができず、代わりに、それ自体を変更するビュー レイアウトを作成できることを意味します。アプリは、制約に基づいて 3.5 インチの全画面表示 (IPhone4) または 4 インチの全画面表示 (IPhone5) で実行されます。

したがって、制約を使用した問題のオプション:

1)プログレスバーを相対的に配置するための制約を作成するために使用できるレイアウト上のビューを見つけます。(CMD ボタンを使用してビューとプログレスバーを選択し、Editor/Pin/Vertical Spacing メニュー項目を使用して 2 つのオブジェクト間に垂直方向の制約を作成します)

2)プログレスバーの位置を画面の端(スペースを維持)または中央に固定するための絶対的な制約を作成します

AutoLayout に関するこのチュートリアルも役に立ちます

Pls note: autolayout は IOS 6 以降でのみ機能します。

于 2013-04-01T21:30:18.210 に答える
0

私は通常、制約を設定するために常に Interface Builder にとどまるようにしています。たとえば、iPhone 4 と 6 でまったく異なるレイアウトを使用している場合は、通常、より多くの制御を行うためにコードに飛び込むことが役立ちます。

前述のように、Interface Builder では条件を使用できません。その場合、View Controller に制約をリンクすると非常に便利です。

さまざまな画面サイズの自動レイアウトの問題を解決するための 3 つのアプローチについて簡単に説明します。

于 2015-05-10T10:40:33.967 に答える