2017-09-20 4 views
9

Xcode 9では、iOS開発を開始するにはAppCodaチュートリアルに従っています。私はいくつかの奇妙な動作に気づいて、これはバグか何か私はインターフェイスビルダーでスタックビュー(アプリがコンパイルし、私の電話で正しく表示されて以来)理解していないと思っています。Xcode 9 0から行の高さが14,600.5に設定されたラベルをスタックビューで表示

ラベルを配置し、スタックビューの3番目の要素として設定すると、2つの他のネストされたスタックビューの兄弟であり、デフォルトの属性が使用されているとうまく表示されます。しかし、linesプロパティを1から0に変更すると、ラベルと隣接するスタックビューがインタフェースビルダーから消えます。サイズインスペクタで

After

Beforeは、ラベルの座標は、-90 0に0,208.5から変更しました。これらのプロパティを変更すると、ラベルの高さが0,0から375,14600.5に変更され、Xcodeによってエラーがスローされます。Interface Builderは10,000より大きいUILabelサイズを10,000でサポートしません。

これはXcodeのバグですか、またはこのバージョンのXcodeの行属性の動作が変更されています(本書は現在Xcode 8をカバーしています)。

+1

私は非常に同じ問題を抱えています。私はそれがXcode 9のバグだと思っています。ここでは最小のUI要素で問題を再現する方法があります。空のプロジェクトを作成し、ストーリーボードにラベルを貼ります。行数を0に設定し、ラベルをスタックビューに埋め込みます。スタックビューはゼロ次元ビューに折り畳まれます。 –

+0

私にとっても同じ問題です。 –

答えて

14

ここに解決策があります。ラベルビューを選択し、サイズインスペクタに移動します。ラベル環境設定で、明示的なサイズボックスを確認します。これにより、複数の行ラベルをスタックビューに配置するときに、スタックビューが崩れないようにします。

+0

この回避策は私のために働いた。うまくいけばアップルはすぐにこれを修正します。 –

+0

それは私のために働いてくれてありがとう。 +1あなたのために –

-2

あなたのテキストラベルが長すぎると思います。あなたの制約上

numberOfLines docs

This property controls the maximum number of lines to use in order to fit the label’s text into its bounding rectangle. The default value for this property is 1. To remove any maximum limit, and use as many lines as needed, set the value of this property to 0.

基本、あなたのラベルがスタックビューに適合することはできません。私はあなたの大きなUILabelをより小さな部分に分割することをお勧めします。

0

これはXcode 9のバグです。https://github.com/lionheart/openradar-mirror/issues/18779を参照してください。それはXcodeでキャンバスがどのように描かれているかに影響するようです:少なくとも私にとっては、私のアプリはまだ正しく構築されています。私は9.0から9.0.1にアップグレードした後初めて見ましたが、Xcode 9.1にはまだバグがあります。 9.0にダウングレードしましたが、これはこのバグを持っていません。

これはAppleのBug Reporter(bugreport.apple.com)でバグ30484038として報告されています - 私は同様のエラーを報告し、30484038の複製であると回答しました。私は回避策があるか、それが修正されるまでに予想される時間があるかどうかを尋ねましたが、まだ回答がありませんでした。

UILabelsの影響を回避するための明示的なサイズを設定してみます。 Interface Builderで編集しているときに、設計時固有のコンテンツのサイズを設定するだけのビューに影響します

+0

私のストーリーボードでXcode 9.1を使用して、サイズインスペクタの明示的な幅のボックスをチェックすると、キャンバスにラベルが表示されることが確認されました。問題はいくつかの場所でこの問題が発生していることです。次のステップは、すべてのレイアウトが以前と同様に表示されることを確認するためにレイアウト制約を調整することです。 Xcode 9.0には(少なくとも私の場合は)この問題はなく、Xcodeがどのようにキャンバスを表示するかのアーティファクトであるようだから、Xcode 9.0を使い続け、Appleが来るかどうかを待つ実際の修正でアウトします。 – jsblau

1

セットサイズインスペクタ>なしと高さに固有のサイズ>プレースホルダ、設定幅は説明から30

が言うにします。このビューは、実行時にこの本質的なコンテンツサイズを持ちません。

Xcode Help:プレースホルダの組み込みサイズを使用して、ビューの幅と高さを指定し、デザイン時の制約のあいまいさを回避します。

0

xibでは、label(100など)の一時的な高さの制約を設定して削除するだけです。設定した高さが表示されます(実際の高さではなく、表示の高さのみ)。

関連する問題