Saya menggunakan batasan tata letak otomatis secara terprogram untuk mengatur tata letak sel UITableView kustom saya dan saya menentukan ukuran sel dengan benar di tableView:heightForRowAtIndexPath:
Ini berfungsi dengan baik di iOS6 dan terlihat baik-baik saja di iOS7 juga
TETAPI ketika saya menjalankan aplikasi di iOS7, inilah jenis pesan yang saya lihat di konsol:
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.
2013-10-02 09:56:44.847 Vente-Exclusive[76306:a0b] 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)
(
"<NSLayoutConstraint:0xac4c5f0 V:|-(15)-[UIImageView:0xac47f50] (Names: '|':UITableViewCellContentView:0xd93e850 )>",
"<NSLayoutConstraint:0xac43620 V:[UIImageView:0xac47f50(62)]>",
"<NSLayoutConstraint:0xac43650 V:[UIImageView:0xac47f50]-(>=0)-[UIView:0xac4d0f0]>",
"<NSLayoutConstraint:0xac43680 V:[UIView:0xac4d0f0(1)]>",
"<NSLayoutConstraint:0xac436b0 V:[UIView:0xac4d0f0]-(0)-| (Names: '|':UITableViewCellContentView:0xd93e850 )>",
"<NSAutoresizingMaskLayoutConstraint:0xac6b120 h=--& v=--& V:[UITableViewCellContentView:0xd93e850(44)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0xac43650 V:[UIImageView:0xac47f50]-(>=0)-[UIView:0xac4d0f0]>
Dan memang ada salah satu kendala dalam daftar itu yang tidak saya inginkan:
"<NSAutoresizingMaskLayoutConstraint:0xac6b120 h=--& v=--& V:[UITableViewCellContentView:0xd93e850(44)]>"
dan saya tidak dapat mengatur translatesAutoresizingMaskIntoConstraints
properti dari contentView
ke NO => itu akan mengacaukan seluruh sel.
44 adalah tinggi sel default tetapi saya menentukan ketinggian kustom saya dalam delegasi tampilan tabel jadi mengapa sel contentView memiliki batasan ini? Apa yang menyebabkan ini?
Di iOS6 itu tidak terjadi dan semuanya terlihat baik-baik saja di iOS6 dan iOS7.
Kode saya cukup besar jadi saya tidak akan mempostingnya di sini tetapi jangan ragu untuk meminta pastebin jika Anda membutuhkannya.
Untuk menentukan bagaimana saya melakukannya, pada inisialisasi sel:
- Saya membuat semua label, tombol, dll
- Saya menetapkan
translatesAutoresizingMaskIntoConstraints
properti mereka ke NO - Saya menambahkannya sebagai subview dari
contentView
sel - Saya menambahkan batasan pada
contentView
Saya juga sangat tertarik untuk memahami mengapa ini hanya terjadi di iOS7.