Xcode 11 menambahkan batasan baru yang disetel nol: gunakan nilai yang disetel sebagai ganti standar / standar

74

Saya dulu menggunakan autolayout menambahkan batasan baru untuk membuat batasan sederhana untuk tampilan superview / relatif seperti ini (untuk waktu loooong):

masukkan deskripsi gambar di sini

Namun, baru-baru ini setelah diperbarui ke xcode terbaru (11.3.3 atau hanya 11.3 / 11C29), saya memiliki masalah aneh ini: ketika saya menetapkan konstanta = 0, mereka selalu menghasilkan kendala dengan cara yang tidak diinginkan seperti ini:

masukkan deskripsi gambar di sini

Dan tampaknya nilai defaultnya entah bagaimana 20 dan membuat pandangan saya terlihat sangat salah (0 dibandingkan dengan 20?)

Jika saya memperbaikinya dengan mengedit batasan seperti ini:

masukkan deskripsi gambar di sini

Kemudian akan diperbaiki lagi (gambar setelah diedit kendala, sebelum diedit itu menampilkan konstan = Standard)

Saya bahkan tidak tahu bagaimana menggambarkan masalah ini, tetapi bagaimana cara memperbaikinya baru add new constraintuntuk menggunakan titik keinginan saya alih-alih standar / default?

Memperbarui:

Sepertinya hanya terjadi ketika kendala superview. Tidak tahu bagaimana cara memperbaikinya.

Pembaruan Apr-01-2020:

Xcode11.4 memperbaiki ini.

Eddie
sumber
2
Masalah yang sama disini. Saya pikir ini muncul untuk pertama kalinya ketika saya melakukan pembaruan ke UPD 11.3: Proyek yang sama tidak memiliki masalah ini di komputer lain dengan versi xcode yang sama. Mungkin itu terkait dengan konfigurasi IDE atau mungkin itu adalah bug dari IDE itu sendiri.
Dmitrij Rogov
1
Masalah yang sama di sini. Menggunakan Xcode 11.3 (11C29).
user525504
1
Edisi yang sama Versi 11.3 (11C29)
user832
1
@ DmitrijRogov Saya ingat kadang-kadang sebelumnya (xcode 8,9 atau 10), ada pengaturan di suatu tempat yang membantu kita menentukan standardnilai (sehingga kita dapat mengatur 10 atau 0 bukannya default = 8) tetapi saya lupa di mana itu sekarang. Atau mungkin mereka menghapus fitur?
Eddie
5
Ini membuatku gila
Buyin Brian

Jawaban:

37

Sepertinya bug (jangan lupa untuk file dengan Apple). Ini solusi sederhana:

Saat Anda mengisi angka di "popover", alih-alih mengetik 0, ketik 0.01. Ini akan mencegah nomor berubah secara misterius menjadi "Standar". Oke, jadi 0.01tidak sama dengan 0tetapi cukup dekat sehingga Anda tidak bisa membedakannya, dan setidaknya Anda tidak harus kembali dan mengubahnya nanti.

EDIT Apple mengatakan bahwa bug ini akan diperbaiki di Xcode 11.4:

Memperbaiki bug yang mencegah memasuki konstanta 0 di editor popup kendala. (54076090)

matt
sumber
1
kerja bagus di sekitar, terima kasih!
Eddie
1
Bagus! Apa yang mengganggu masalah ini bisa ..
Joaquin Pereira
Ini berfungsi dengan baik ketika saya menggunakan 0,01 di tempat 0
Teja
Tetapi pengaturan ke 0 kedua kalinya berfungsi. Mengapa repot-repot dengan 0,01? Ini cukup menjengkelkan. Untung itu bug dan bukan "fitur".
Vlad Rusu
11

Sementara solusi @matt berfungsi, saya hanya ingin menambahkan bahwa Anda dapat mengaturnya ke 0,01 dan kemudian mengubahnya ke 0, itu tidak akan berubah ke nilai standar lagi. Catatan: Xcode 11.3

chhay sotheara
sumber
Bagi saya ketika saya mengubahnya kembali ke 0 itu kemudian berubah menjadi "standar" lagi. Xcode 11.3.1.
John Scalo
10

Pada Xcode 11.3.1:

Solusi paling rapi dan tercepat yang saya temukan adalah sebagai berikut:

Cukup ketik -0ke dalam bidang kendala. Xcode tampaknya membuang yang negatif dan berperilaku dengan benar, yang lebih baik daripada membaca 0.01untuk semuanya.

Anda dapat menyisipkan semua kendala sekaligus, tanpa harus melakukannya satu per satu atau buka dan edit nanti.

Xcode menampilkan nilai sebagai ini

Tampaknya memang perilaku yang sangat bodoh. Apakah ada alasan bahwa Apple mungkin membuatnya melakukan ini dengan sengaja ...?

Sunting: Ini sepertinya tidak berfungsi setiap saat , yang membuat frustrasi. Saya baru saja memiliki acara UIImageView 0 hingga Superview, namun secara visual masih berada pada nilai default (20). Ini benar-benar tampak seperti bug dengan IB karena perilakunya benar-benar tidak masuk akal.

Dave Y
sumber
9

Perilaku ini tampaknya diperbaiki pada Xcode 11.4: catatan rilis

Memperbaiki bug yang mencegah memasuki konstanta 0 di editor popup kendala. (54076090)


Jawaban asli:

Saya baru saja menemukan perilaku ini juga, saya mencoba menambahkan kendala 1 oleh 1 dan Xcode benar-benar menghormati nilai 0.

Dua sen saya.

diaken
sumber
Ya, saya baru saja memperhatikan bahwa dalam catatan rilis juga, dilakukan dengan baik.
matt
5

Saya tahu ini bukan solusi, tetapi untuk solusi sementara untuk mencegah Anda melewati setiap kendala, saya baru tahu bahwa Anda mendapatkan perilaku yang diinginkan jika Anda memasukkan '-0' bukan '0', tetapi Anda harus memasukkan satu kendala setiap waktu.

Gonçalo Gaspar
sumber
ini sebenarnya pilihan yang baik, menambahkan '-0' ketika Anda membuat batasan akan menjadi '0' di inspektur, tidak perlu pergi ke sana dan mengubahnya
busta117
1

Sebenarnya tidak ada cara untuk menyelesaikan masalah ini pada saat yang bersamaan

tetapi solusi sementara terbaik adalah menambahkan kendala dengan nol satu per satu.

Ahmed Samir
sumber
0

abaikan itu ketika standar.

setelah menambahkannya klik pada constrain (garis biru) dan inspector untuk membatasi atribut dan atur ke 0.

itu bekerja untuk saya

Jirakit Paitoonnaramit
sumber
0

Masih mengalami bug ini (Xcode 11.3.1). Memperbaikinya dengan hanya menambahkan kendala sebagai "standar", lalu mengklik garis kendala biru dan mengatur "konstan" di bawah inspektur ukuran ke 0.

Jaskirat Singh
sumber