web-dev-qa-db-ja.com

フレームは「実行時に異なる」....それがポイントではないでしょうか?

「警告なしの」プロジェクトを目指して努力するのは無益かもしれませんが、Adaptive Layout/AutoLayoutについては十分に緊張しており、これらの警告を押しつぶさざるを得ません。

ポートレート画面の幅に基づいて動的にサイズを調整したいuiviewがあります。ユニバーサル向けのビルド情報にポートレートのみ(および逆さま)でアプリを設定しています。私は次の方法でuiviewを制限しました。

  1. ビューの中心をスーパービューの中心Xに揃えました
  2. ビューの幅をスーパービューの幅に比例させました
  3. ビューに1:1のアスペクト比制約を与えました
  4. ビューにスーパービューの上部への垂直制約が与えられた

詳細については、以下のスクリーンショットをご覧ください。

そのため、現在、ビューの「実行時にフレームが異なる」こと、特に実行時のサイズと位置とキャンバスの内容に関する警告が表示されます。 Xcodeは、クラスサイズが任意の高さと任意の幅に設定されているキャンバスを「気にする」理由はわかりません。アダプティブレイアウトのポイントは、デバイスの画面サイズと向きに基づいて実行時にサイズと位置が解決されることだと思いました。

私が故障してXcodeに「フレームの更新」を許可すると...警告は消えますが、非常に大きなビューでは、WYSIWIGのように小さなキャンバスでグラフィカルに作業することは事実上不可能です。キャンバス内での作業をほとんど不可能にする大きすぎるビューを作成せずに警告を取り除くための解決策はありますか?

Canvas screenshot

20
Electro-Bunny

シミュレートされたメトリックサイズを、たとえば4インチiPhoneに変更できます!

enter image description here

または、フリーフォームしてから、サイズを最適なサイズに変更します。

enter image description here

8

警告を取り除き、制約によってビューを「正しく」配置するには、警告を与えているビューを選択し、ストーリーボードの右下隅にある小さな三角形のものを押します。 enter image description here

[コンテナ内のすべてのビュー]で[フレームを更新]を選択します

(これをストーリーボード全体に行う方法があればいいのにと思います。少なくとも見つけられませんでした)

22
ullstrm

ビューを選択して押します

  • Option + Command + =

これにより、フレームサイズが更新されます。問題のあるすべてのビューに対して繰り返します。特にエラーメッセージをクリックしてそれらを見つけた場合は、それほど時間がかかりません。

この回答 のアイデアに感謝します。


Xcode 8に更新し、デバイスとして表示を選択すると、このエラーが発生しました。メニューはXcode 7とは異なるため、@ Spoekの答えは機能しなくなりました。また、[更新]または[リセット]をクリックしても機能しませんでした。

enter image description here

更新

更新フレームには独自のボタンがあります。それが私が前にそれを逃した理由です。

enter image description here

20
Suragch