Saya membuka proyek iOS yang ada dengan Xcode6 beta6, dan Xcode mencantumkan peringatan berikut untuk file Storyboard dan Xib:
Lebar Tata Letak Max Pilihan Otomatis tidak tersedia pada versi iOS sebelum 8.0
Saya mencoba mengatasi peringatan dengan menetapkan lebar sebagai eksplisit seperti di bawah ini:
Namun ini tidak menyelesaikan peringatan. Bagaimana mereka bisa dihilangkan?
ios
autolayout
ios8
xcode6
mono
sumber
sumber
Jawaban:
Pembaruan 3:
Peringatan ini juga dapat dipicu oleh label yang telah
numberOfLines
menetapkan apa pun kecuali 1 jika target penempatan Anda diatur ke 7.1. Ini sepenuhnya dapat direproduksi dengan proyek tampilan tunggal baru.Langkah-langkah untuk Mereproduksi:
Saya telah mengajukan radar berikut:
rdar: // masalah / 18700567
Pembaruan 2:
Sayangnya, ini adalah hal yang lagi dalam versi rilis Xcode 6. Perhatikan bahwa Anda dapat, sebagian besar, secara manual mengedit storyboard / xib Anda untuk memperbaiki masalah. Per Charles A. dalam komentar di bawah:
Pembaruan 1:
Bug ini sekarang telah diperbaiki di Xcode 6 GM.
Jawaban Asli
Ini adalah bug di Xcode6-Beta6 dan XCode6-Beta7 dan dapat diabaikan dengan aman untuk saat ini.
Seorang insinyur Apple di forum Pengembang Apple harus ini mengatakan tentang bug:
Sebagai alternatif, Anda dapat mengatasi masalah ini dengan menggunakan inspektur file di storyboard atau xib dalam pertanyaan dan mengubah "Builds for" menjadi "Builds for iOS 8.0 dan kemudian"
sumber
<label(?!.*preferredMaxLayoutWidth)
untuk menemukan label yang menghilangkanpreferredMaxLayoutWidth
atribut / nilai. Jika Anda menambahkanpreferredMaxLayoutWidth="0"
garis-garis tersebut, itu sama dengan menandai secara eksplisit dan mengatur nilainya0
.numberOfLines
diatur ke apa pun kecuali 1, peringatan akan terjadi terlepas dari apakah Anda telahpreferredMaxLayoutWidth
menyetel atau tidak.preferredMaxLayoutWidth
ke 0 eksplisit, peringatan itu hilang terlepas darinumberOfLines
nilainya. Tapi mungkin ini sudah diperbaiki di pembaruan Xcode pagi ini?Untuk menemukan label masalah di papan cerita besar, ikuti langkah-langkah saya di bawah ini.
Selanjutnya, ungkapkan storyboard Anda sebagai file sumber.
Cari. Anda harus dapat mengetahui label apa itu dari sini dengan cukup mudah dengan melihat kontennya.
Setelah Anda menemukan label solusi yang bekerja untuk saya adalah mengatur "lebar yang disukai" menjadi 0.
BTW, Anda selalu dapat dengan cepat mendapatkan id item antarmuka dengan memilih item dan melihat di bawah inspektur pengidentifikasi. Sangat berguna.
sumber
Anda dapat memperbaiki masalah ini tanpa membuka storyboard sebagai sumber . Peringatan ini dipicu oleh UILabels jika numberOfLines! = 1 dan target penerapan adalah <8.0
BAGAIMANA CARA MENEMUKANNYA?
sumber
Solusinya cukup sederhana
Cukup aktifkan Builds untuk iOS 8 dan Selanjutnya
sumber
Sekarang versi Xcode saya adalah 6.1. Tapi aku juga mendapat peringatan ini. itu sangat mengganggu saya. setelah mencari lagi dan lagi. Saya menemukan solusinya.
Alasan: Anda harus menetapkan Garis UILabel Anda> 1 di Storyboard Anda.
Solusi: atur atribut UILabel Lines Anda menjadi 1 di Storyboard. restart Xcode Anda. Ini bekerja untuk saya, semoga bisa membantu lebih banyak orang.
Jika Anda benar-benar perlu menunjukkan kata-kata Anda lebih dari 1 baris. Anda harus melakukannya dalam kode.
sumber
Untuk meringkas, bagi saya mengikuti dua instruksi di atas untuk mengubah contoh di mana numberOfLines = 0 ke 1 atau lebih besar, dan secara manual menambahkan preferMaxLayoutWidth = "0" ke setiap instance dari label di dalam sumber storyboard memperbaiki semua peringatan saya.
sumber
Karena saya tidak memiliki 50 reputasi, Stackoverflow tidak akan membiarkan saya mengomentari jawaban terbaik kedua. Menemukan trik lain untuk menemukan label pelakunya di Storyboard.
Jadi, begitu Anda tahu id label, buka storyboard Anda di tab terpisah dengan tampilan pengontrol yang ditampilkan dan lakukan saja perintah F dan perintah V dan akan langsung membawa Anda ke label itu :)
sumber
Saya membuatnya bekerja dengan memilih tata letak asli saya dalam pemilihan W / H. Storyboard berfungsi seperti yang diharapkan dan kesalahan hilang.
Pastikan juga Anda mengembangkan untuk iOS 8.0. Periksa itu dari pengaturan umum proyek.
Di sinilah Anda harus menekan.
sumber
Saya memiliki masalah ini dan dapat memperbaikinya dengan menambahkan batasan untuk menentukan maks dengan label.
Ketika menjatuhkan label multiline di sana tidak ada batasan yang ditetapkan untuk menegakkan lebar di dalam tampilan induk. Di sinilah PreferredMaxWidth baru berperan. Di iOS 7 dan sebelumnya Anda harus menentukan sendiri lebar maks. Saya hanya menambahkan batasan 10px ke sisi kiri dan kanan label.
Anda juga dapat menambahkan batasan <= width yang juga memperbaiki masalah.
Jadi ini sebenarnya bukan bug, Anda hanya perlu menentukan sendiri lebar maks. Opsi eksplisit yang disebutkan dalam jawaban lain juga akan berfungsi saat Anda menetapkan nilai lebar ini namun Anda harus mengubah nilai ini jika Anda ingin lebar maks berubah berdasarkan lebar induk (seperti Anda telah secara eksplisit mengatur lebar).
Solusi saya di atas memastikan lebar selalu dipertahankan tidak peduli seberapa besar pandangan orang tua.
sumber
Untuk beberapa alasan, bahkan jika mengubah Target Penempatan iOS ke 8.0 atau lebih tinggi, file Xib tidak mengadopsi perubahan itu dan tetap dengan pengaturan sebelumnya di inspektur File
Karena itu, Anda harus mengubahnya secara manual untuk setiap Xib
Setelah selesai, peringatan akan hilang :-)
sumber