web-dev-qa-db-ja.com

Xcodeが再起動するたびに表示が誤って配置される

アプリで初めてストーリーボードを使用しています

Xcodeを閉じると、見当違いのビューやストーリーボードに関連するものに関する警告が0になります。 Xcodeを再起動してストーリーボードを開くと、15シーンのうち3シーンでビュー警告が誤って配置されています。

ファイルを選択する以外に何も触れずに、git statusを発行して、.storyboardファイルに変更があることを確認できます。 git diffの場合、これはファイルの複数の領域に含まれています。

<variation key="widthClass=compact" misplaced="YES">
    <rect key="frame" x="8" y="56" width="130" height="34"/>
</variation>

要素に既に<variation key="widthClass=Compact"ノードが含まれている場合、misplaced属性とrectノードが追加されます。

警告を消すために私がしなければならない唯一のことは、それぞれをクリックして、「フレームの更新」が選択されていることを確認し、「置き間違いを修正」をクリックすることです。 Xcodeを再起動するまで、すべてが修正されます。

私のシーンの基本構造は次のとおりです。

UIView
    UICollectionView
        UICollectionReusableView
        UICollectionViewCell
        UICollectionViewCell
    UISegmentedControl

再起動するたびにこれを防ぐにはどうすればよいですか?

62
djibouti33

ビューを誤って配置する理由の1つは、ストーリーボードでライブビュー(IBDesignables)を使用した場合、ストーリーボードを開いて、IBがすべてのライブビューの構築を完了する前に他のファイルにすばやく移動すると、ビューが誤って配置されることです。 IBは、エディターでストーリーボードを表示するとすぐにライブビューの構築を開始します。誤って配置されたビューを修正するには、IBを少しの間ストーリーボードにとどめてストーリーボードの構築を完了するまでしばらく待ちます。そうすれば、誤って配置されたビューが修正されます。

2
SHN

私の場合、カスタムフォントと組み込み(明示的に定義されていない)サイズのすべてのラベル/ボタンで発生します。 Xcodeのバグのように見えます。

2
SoftDesigner

これは通常、制約を適切に設定していない場合に発生します。

UIViewController内のすべてのビューを削除し、制約とともに新たに追加してみてください。

コードをクリーンにして実行します。

2

以前にも同じ問題に直面していますが、それは私たちのせいではなく、Xcodeのバグにすぎないと思います。

もしあなたの .storyboardファイルは変更されましたが、何もタッチしていません。ファイルを選択してXcodeメニューを選択してくださいSource Control-> Discard Changes in "xxxx.storyboard"...、それは動作するはずです:)

1
X140Yu

以前のアプリでも同じ問題に直面していました。ここで気づいたのは、ストーリーボードのサイズが重要だということです。

これはXcodeの問題です。

any width any heightのストーリーボードを使用する場合、この問題は発生しません。サイズコンパクトな幅、通常の高さのストーリーボードを使用している場合、この問題が発生します。

Xcodeでデフォルトのストーリーボードサイズを使用してみてください

0
user4886069

この問題は、実行時に実際の画面サイズに合わない制約を追加した場合に発生します。たとえば、画面幅(幅600など)を超える幅のUIButtonがあり、そのUIButtonに固定幅制約を追加し、先行または後続の制約を追加しない場合、競合がないためXcodeは警告を表示しませんが、画面幅が600未満のデバイスまたはシミュレーターでアプリを実際に実行すると、Xcodeは自動的にUIButtonの幅を調整して画面幅が600未満になるようにし、レイアウトの制約を実行時に画面に合わせたものに変更します

0
Sameh Salama

ストーリーボードの下部には、サイズクラスを選択するオプションがあります。オプションをwRegular hRegularから他のオプションに変更すると、同様の問題が発生します。この理由はわかりません。

プロジェクトを閉じる前に選択したものと同じサイズクラスをプロジェクトを開いて選択することにより、解決を試みてください。

たとえば、サイズクラスをiPhoneのwCompact hRegularとして選択し、プロジェクトを閉じた場合。プロジェクトを再度開くと、サイズクラスがwRegular hRegularに変更されていることがわかります。このため、ビューオブジェクトが変更されます。問題を解決するには、wCompact hRegularをもう一度選択します。

それが役立つことを願っています。

0
priya bagrecha

サイズクラスを使用している場合、いずれかの制約が限界に達していません(Any-Anyの場合、すべてのデバイスタイプによる)。そうでない場合は、フレームまたは制約を調整して、もう一度確認してください。

自動レイアウトもこの問題を引き起こす可能性があります。警告をクリックすると、警告に関するすべての情報が表示されます。

0
Nupur Gupta

単純な修正方法としては、Xcodeが制約を選択できるようにし、戻って選択内容を確認し、動作することを確認します。

ストーリーボード内:

  • 問題が発生したView Controllerを選択
  • 自動レイアウトの問題を解決する(右下)
  • 選択したビュー:推奨される制約にリセット

リセットされた制約を確認するには:

  • コントローラー内の各ビューを選択
  • 制約インスペクター(右上)
  • スクロールダウンして制約を調べる
0
Allen
  1. クリックして通常のファイルをプレビューします(.xibまたは.storyboardファイル)
  2. xcodeを終了
  3. 実行git checkout .
  4. xcodeを再起動する

.storyboardファイルは現在変更されていません。

0
Longfei Wu