Di bawah ini adalah pesan kesalahan yang saya terima di area debug. Ini berjalan dengan baik dan tidak ada yang salah kecuali saya menerima kesalahan ini. Apakah ini akan mencegah apel menerima aplikasi? Bagaimana saya memperbaikinya?
2012-07-26 01:58:18.621 Rolo[33597:11303] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSAutoresizingMaskLayoutConstraint:0x887d630 h=--& v=--& V:[UIButtonLabel:0x886ed80(19)]>",
"<NSAutoresizingMaskLayoutConstraint:0x887d5f0 h=--& v=--& UIButtonLabel:0x886ed80.midY == + 37.5>",
"<NSAutoresizingMaskLayoutConstraint:0x887b4b0 h=--& v=--& V:[UIButtonLabel:0x72bb9b0(19)]>",
"<NSAutoresizingMaskLayoutConstraint:0x887b470 h=--& v=--& UIButtonLabel:0x72bb9b0.midY == - 0.5>",
"<NSLayoutConstraint:0x72bf860 V:[UILabel:0x72bf7c0(17)]>",
"<NSLayoutConstraint:0x72c2430 UILabel:0x72bfad0.top == UILabel:0x72bf7c0.top>",
"<NSLayoutConstraint:0x72c2370 UILabel:0x72c0270.top == UILabel:0x72bfad0.top>",
"<NSLayoutConstraint:0x72c22b0 V:[UILabel:0x72bf7c0]-(NSSpace(8))-[UIButton:0x886efe0]>",
"<NSLayoutConstraint:0x72c15b0 V:[UILabel:0x72c0270]-(NSSpace(8))-[UIRoundedRectButton:0x72bbc10]>",
"<NSLayoutConstraint:0x72c1570 UIRoundedRectButton:0x72bbc10.baseline == UIRoundedRectButton:0x7571170.baseline>",
"<NSLayoutConstraint:0x72c21f0 UIRoundedRectButton:0x7571170.top == UIButton:0x886efe0.top>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x72bf860 V:[UILabel:0x72bf7c0(17)]>
Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
ios
objective-c
debugging
nslayoutconstraint
Johnny Cox
sumber
sumber
Jawaban:
Saya akan merekomendasikan untuk debug dan menemukan batasan mana yang "Anda tidak mau" . Misalkan Anda memiliki masalah berikut:
Selalu masalahnya adalah bagaimana menemukan Kendala dan Tampilan berikut.
Ada dua solusi bagaimana melakukan ini:
Karena Anda tahu di mana menemukan kendala yang tidak terduga (PBOUserWorkDayHeaderView) ada cara untuk melakukan ini dengan cukup baik. Mari kita temukan
UIView
danNSLayoutConstraint
dalam persegi panjang merah. Karena kita tahu id mereka di memori itu cukup mudah.Seperti yang Anda lihat, pointer memori sama. Jadi kita tahu apa yang sedang terjadi sekarang. Selain itu, Anda dapat menemukan
NSLayoutConstraint
dalam hierarki tampilan. Karena dipilih dalam Lihat, itu juga dipilih di Navigator.Jika perlu, Anda juga dapat mencetaknya di konsol menggunakan penunjuk alamat:
Anda dapat melakukan hal yang sama untuk setiap kendala yang akan ditunjukkan oleh debugger kepada Anda :-) Sekarang Anda memutuskan apa yang harus dilakukan dengan ini.
CETAK LEBIH BAIK (Saya sangat merekomendasikan cara ini, ini dari Xcode 7)
NSLayoutConstraint
:SWIFT :
TUJUAN-C
id
Anda dapat dengan mudah mengetuknya di Find Navigator Anda :BAGAIMANA CARA SIMPLE KASUS BAHWA?
999
untuk batasan yang rusak.sumber
Masalah yang Anda alami adalah NSAutoresizingMaskLayoutConstraints seharusnya tidak ada di sana. Ini adalah sistem lama pegas dan struts. Untuk menghilangkannya, jalankan metode ini pada setiap tampilan yang ingin Anda batasi:
sumber
Hati-hati , agar Anda tidak menggunakan lebih dari satu kendala dalam arah dan jenis yang sama.
Misalnya: Batasan vertikal untuk trailing = 15 dan yang lainnya adalah> = 10.
Terkadang, Xcode membuat beberapa kendala yang tidak Anda perhatikan . Anda harus menyingkirkan kendala yang berlebihan dan peringatan log pasti akan hilang.
Selain itu, Anda dapat membaca dan mendeteksi beberapa alasan tertentu, langsung dari log :
Ini bisa kita baca sebagai masalah pada batasan UILabel, ini menyebabkan batas vertikal menjadi 15pt.
Ini akan menjadi kendala horizontal dll.
sumber
Saya memiliki cukup banyak pengecualian yang dilemparkan, cara tercepat dan termudah yang saya temukan untuk menyelesaikannya adalah dengan menemukan nilai unik dalam pengecualian yang kemudian saya cari dalam kode sumber storyboard. Ini membantu saya menemukan tampilan aktual dan kendala yang menyebabkan masalah (saya menggunakan label pengguna yang bermakna pada semua tampilan, yang membuatnya jauh lebih mudah untuk melacak kendala dan tampilan) ...
Jadi, dengan menggunakan pengecualian di atas saya akan membuka storyboard sebagai "kode sumber" di xcode (atau editor lain) dan mencari sesuatu yang dapat saya temukan ...
.. ini terlihat seperti batasan vertikal (V) pada UILabel dengan nilai (17).
Melihat melalui pengecualian saya juga menemukan
Yang terlihat seperti label UIL (0x72bf7c0) dekat dengan tombol UIB (0x886efe0) dengan spasi vertikal (8) ..
Mudah-mudahan itu akan cukup bagi saya untuk menemukan pandangan spesifik dalam kode sumber storyboard (mungkin dengan mencari teks "17" pada awalnya), atau setidaknya beberapa kandidat. Dari sana saya harus benar-benar dapat mengetahui pandangan mana yang ada di storyboard yang akan membuatnya lebih mudah untuk mengidentifikasi masalah (mencari pinning "duplikat" atau pinning yang bertentangan dengan batasan ukuran).
sumber
Saya mengalami kesulitan mencari tahu kendala apa yang menyebabkan kesalahan ini. Inilah cara yang lebih sederhana untuk melakukannya.
Saya menggunakan Xcode 6.1.1
sumber
Saya mengalami masalah ini karena
.xib
file saya menggunakan autolayout.Di inspektur file, tab pertama. Menghapus centang "Gunakan Autolayout" menyelesaikan masalah.
sumber
UIImageView
telah berubah. Anda harus mengatur posisi ini lagi, baik secara terprogram atau melalui Interface Builder.Inilah pengalaman dan Solusi saya. Saya tidak menyentuh kode
sumber
gunakan swift kode ini
sumber
Saya telah mengikuti pertanyaan dan jawaban SO dari setiap permintaan pencarian. Tetapi mereka semua terkait dengan yang spesifik.
Pada dasarnya, maksud saya sebelum Anda akan menuliskan format (mungkin yang sederhana) itu akan memberi Anda peringatan.
Dari iOS 8.0 secara default tampilan adalah kelas ukuran. Bahkan jika Anda menonaktifkan kelas ukuran itu masih akan berisi beberapa batasan tata letak otomatis.
Jadi jika Anda berencana untuk menetapkan batasan melalui kode menggunakan VFL. Maka Anda harus mengurus satu di bawah garis.
Saya sudah banyak mencari di SO, tetapi solusinya terletak pada Apple Sample Code .
Jadi, Anda harus menghapus batasan default sebelum berencana untuk menambahkan yang baru.
sumber
Bagi saya alasan utama masalah ini adalah bahwa saya lupa untuk menghapus centang
AutoLayout
padaXib
editor. Bahkan, saya melakukan banyak penyesuaianXIB
pada kode.sumber
Ini membantu saya menangkap pandangan yang menyebabkan masalah.
sumber
Tidak ada jawaban di atas yang membantu dalam situasi saya. Saya menjalankan XCode 10.1 dan menguji aplikasi saya di simulator untuk "iPad (generasi ke-5)". Simulator menjalankan iOS 12.1.
Saya punya tampilan root sederhana di storyboard saya, dengan dua subview UITextField. Tidak ada kendala yang digunakan di storyboard sama sekali. Dan saya tidak punya objek UIButtonBarView di aplikasi atau storyboard.
Tidak ada pesan yang dicetak saat aplikasi diluncurkan dan memunculkan tampilan root. Tidak ada ketika perangkat simulasi diputar.
Namun dalam simulator, saat saya mengklik salah satu bidang teks, ekstensi keyboard muncul dari bagian bawah layar, meskipun bukan keyboard lengkap, yang sepertinya tidak pernah muncul di simulator. Tetapi yang berikut ini dicetak di terminal:
Jelas bagi saya bahwa semua ini tidak ada hubungannya dengan aplikasi saya, dan semuanya berkaitan dengan bagaimana Apple membuat tampilan keyboard sendiri, bahkan dengan ekstensi kecil saya yang dinyatakan digabungkan dengannya.
Jadi pertanyaannya tetap, apakah ada sesuatu yang saya sebagai pengembang aplikasi bertanggung jawab untuk lakukan (dengan anggapan ini adalah banyak hal yang perlu diperhatikan) atau apakah itu hanya masalah / bug Apple sendiri?
FWIW, pesan kendala ini tidak terjadi ketika mensimulasikan model iPad yang lebih baru, seperti iPad Pro 12.9 inci (generasi ke-3). Tetapi pesan itu muncul ketika mensimulasikan iPad Pro 9,7 inci ". Semua mengklaim mereka menjalankan iOS 12.1.
sumber
Saya mendapatkan kesalahan yang sama, tetapi hanya pada tampilan tertentu, ketika saya menyentuh bidang teks pertama, dan kemudian bidang teks berikutnya ke bawah.
Saya menulis di SwiftUI untuk iOS 13.4
sumber
Saya juga mendapatkan masalah yang sama dengan melanggar batasan dalam log, untuk viewCircle di xib. Saya hampir mencoba semua yang tercantum di atas dan tidak ada yang berhasil untuk saya. Kemudian saya mencoba untuk mengubah prioritas batasan Tinggi yang melanggar di log (dikonfirmasi dengan menambahkan pengidentifikasi untuk kendala pada xib) masukkan deskripsi gambar di sini
sumber
Satu hal yang harus diperhatikan (setidaknya ini membuat saya tersandung) adalah bahwa saya menghilangkan kendala dari pandangan yang salah. Batasan yang saya coba hapus bukanlah kendala anak pada pandangan saya, jadi ketika saya melakukannya
sebenarnya tidak menghapus apa pun karena saya perlu menelepon
karena kendala itu secara teknis saudara kandung kendala pandangan saya.
sumber
cepat 4
Saya hanya menambahkan baris ini di viewDidLoad dan bekerja dengan baik dengan saya.
sumber