Xcode 11は新しい制約セット0を追加します:デフォルト/標準の代わりに設定値を使用します


74

私はautolayoutを使用して新しい制約を追加して、次のようなスーパービュー/相対ビューに単純な制約を作成しました(長い間):

ここに画像の説明を入力してください

しかし、最近、最新のxcode(11.3.3または11.3 / 11C29)に更新した後、この奇妙な問題が発生しました。定数= 0を設定すると、常に次のような望ましくない方法で制約が生成されます。

ここに画像の説明を入力してください

そして、デフォルト値はどういうわけか20であり、私のビューをとても間違って見えるようにしています(20と比較して0?)

このように制約を編集して修正した場合:

ここに画像の説明を入力してください

次に、もう一度修正します(画像は、制約を編集した後、編集する前に、定数=を表示しますStandard

私は問題を説明する方法さえ知りませんがadd new constraint、標準/デフォルトの代わりに私の欲望ポイントを使用するためにこれをどのように修正しますか?

更新:

スーパービューへの制約があったときにのみ発生したようです。どのように修正するのかわかりません。

2020年4月1日更新:

Xcode11.4はこれを修正しました。


2
ここでも同じ問題。これは11.3 UPDにアップデートしたときに初めて現れたと思います。同じプロジェクトで、同じバージョンのxcodeを使用する別のマシンではこの問題は発生しません。多分それはIDE設定に関連しているかもしれませんし、多分それはIDE自体のバグです。
Dmitrij Rogov

1
ここで同じ問題。Xcode 11.3(11C29)を使用します。
user525504

1
同じ問題バージョン11.3(11C29)
user832

1
@DmitrijRogov以前に何度か思い出しました(xcode 8,9または10)、standard値を定義するのに役立つ設定があります(そのため、の代わりに10または0を設定できますdefault = 8)が、今どこにあるのか忘れてしまいました。または、おそらく機能を削除しましたか?
Eddie、

5
これは私を夢中にさせています
Buyin Brian

回答:


37

バグのようです(Appleに提出することを忘れないでください)。簡単な回避策は次のとおりです。

「ポップオーバー」に数値を入力する0場合は、を入力する代わりに、を入力します0.01。これにより、数値が不思議なことに「標準」に変わるのを防ぎます。わかりました、それ0.01は同じではありませ0んが、違いがわからないほど十分に近いので、少なくとも戻って後で変更する必要はありません。

編集 Appleは、このバグはXcode 11.4で修正されると述べています。

制約ポップアップエディターで0定数を入力できないバグを修正しました。(54076090)


1
いい仕事、ありがとう!
Eddie、

1
すごい!この問題はどのように迷惑なのか..
ホアキンペレイラ

0の代わりに0.01を使用すると問題なく動作します
Teja

ただし、2回目に0に設定すると機能します。なぜ0.01に悩むのですか?とにかくかなり面倒です。これはバグであり、「機能」ではありません。
Vlad Rusu

11

@mattの回避策が機能している間、0.01に設定してから0に変更できることを追加したいと思います。標準の値に再び変更されることはありません。注:Xcode 11.3


私にとってそれを0に戻すと、再び「標準」に変わります。Xcode 11.3.1。
John Scalo

10

Xcode 11.3.1以降:

私が見つけた最も穏やかで最速の解決策は次のとおりです:

-0制約フィールドに入力するだけです。Xcodeはネガを破棄するように見え、それは正しく動作0.01します。

すべての制約を一度に挿入できます。一度に1つずつ行ったり、後で編集する必要はありません。

Xcodeはこのように値を表示します

それは本当に馬鹿げた行動のように見えます。Appleが意図的にこれを行わせたかもしれない理由はありますか...?

編集:これは毎回うまくいくとは限らず、イライラします。UIImageViewに0からSuperviewまでを表示しましたが、視覚的にはデフォルト値(20)のままです。これは、動作が完全に非論理的であるため、IBのバグのように見えます。


9

この動作はXcode 11.4で修正されたようです:リリースノート

制約ポップアップエディターで0定数を入力できないバグを修正しました。(54076090)


元の回答:

私もこの動作を見つけました。1つずつ制約を追加しようとしましたが、Xcodeは実際には0の値を尊重していました。

私の2セント。


ええ、私はリリースノートでもよく気づいたばかりです。
マット

5

私はこれが解決策ではないことを知っていますが、すべての制約を通過するのを防ぐための一時的な解決策として、「0」ではなく「-0」を挿入すると目的の動作が得られることを知りましたが、1つ挿入する必要があります毎回制約。


これは実際には適切なオプションです。制約を作成するときに「-0」を追加すると、インスペクターで「0」になり、そこに行って変更する必要はありません
busta117

1

差し当たり、この問題を解決する方法は実際にはありません

しかし、最善の一時的な解決策は、ゼロの制約を1つずつ追加することです。



0

このバグはまだ発生しています(Xcode 11.3.1)。制約を「標準」として追加し、青色の制約線をクリックして、サイズインスペクターの下の「定数」を0に設定することで修正しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.