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:
- Buat proyek single-view, objektif-c baru
- Tetapkan Target Penerapan menjadi 7.1
- Buka storyboard proyek
- Letakkan label pada pengontrol tampilan yang disediakan
- Setel numberOfLines untuk label tersebut menjadi 2.
- Menyusun
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:
Perlu disebutkan bahwa Anda dapat dengan mudah secara tidak sengaja memperkenalkan peringatan ini, dan peringatan itu sendiri tidak membantu dalam menemukan label yang menjadi pelakunya. Ini disayangkan di storyboard yang kompleks. Anda dapat membuka storyboard sebagai file sumber dan mencari dengan regex <label(?!.*preferredMaxLayoutWidth)
untuk menemukan label yang menghilangkan atribut / nilai yang lebih disukaiMaxLayoutWidth. Jika Anda menambahkan preferMaxLayoutWidth = "0" pada baris tersebut, itu sama dengan menandai secara eksplisit dan mengatur nilai 0.
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:
Lebar tata letak maks yang diutamakan adalah properti tata letak otomatis pada UILabel yang memungkinkannya tumbuh secara vertikal secara vertikal agar sesuai dengan kontennya. Versi Xcode sebelum 6.0 akan mengatur preferMaxLayoutWidth untuk label multiline ke ukuran batas saat ini pada waktu desain. Anda perlu memperbaruiMaxLayoutWidth yang dipilih secara manual saat runtime jika tata letak horizontal Anda berubah.
iOS 8 menambahkan dukungan untuk penghitungan secara otomatisMaxLayoutWidth yang disukai saat runtime, yang membuat pembuatan label multiline menjadi lebih mudah. Pengaturan ini tidak kompatibel dengan iOS 7. Untuk mendukung iOS 7 dan iOS 8, Xcode 6 memungkinkan Anda untuk memilih "Otomatis" atau "Eksplisit" untuk memilih MaxPayoutWidth di inspektur ukuran. Anda harus:
Pilih "Otomatis" jika menargetkan iOS 8 untuk pengalaman terbaik. Pilih "Eksplisit" jika menargetkan <iOS 8. Anda kemudian dapat memasukkan nilai preferMaxLayoutWidth yang ingin Anda atur. Mengaktifkan "Eksplisit" secara default ke ukuran batas saat ini pada saat Anda menandai kotak.
Peringatan akan muncul jika (1) Anda menggunakan tata letak otomatis, (2) "Otomatis" diatur untuk label multiline [Anda dapat memeriksanya di pemeriksa ukuran untuk label], dan (3) target penyebaran Anda <iOS 8.
Kelihatannya masalahnya adalah peringatan ini muncul untuk dokumen non-autolayout. Jika Anda melihat peringatan ini dan tidak menggunakan tata letak otomatis, Anda dapat mengabaikan peringatan itu.
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"