لدي فئة فرعية UICollectionViewCell تم إعدادها مع خلية نموذجية وقيود (يتم توصيل كل عرض رأسيًا وأفقيًا).
لدي تصنيفان يمكن أن يختلفا في الحجم ، يمكن أن يكونا سطرًا واحدًا أو سطرين. تحقيقا لهذه الغاية ، قمت بتعيين اثنين من قيود الارتفاع على كل تسمية ، واحد مع أكبر أو يساوي (16 أو 20 حسب الملصق) وأقل من أو يساوي (32 أو 40 حسب الملصق).
يتم تعيين عدد الأسطر الموجودة على التسميات على 0. (على الرغم من أنني جربت مجموعة متنوعة من الإعدادات).
نظرًا لأنني استخدمت التخطيط التلقائي والقيود لإعداد العرض ، فقد حددت عرضًا في عرض المحتوى في تنبيه الخلية من AwesomeFromNib ()
override func awakeFromNib() {
NSLayoutConstraint.activate([contentView.widthAnchor.constraint(equalToConstant: 341)])
super.awakeFromNib()
configureBorder()
}
في تخطيط collectionView ، قمت بتحديد ثابت البعد التلقائي لـ EstimItemSize & itemSize
if let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
flowLayout.estimatedItemSize = UICollectionViewFlowLayoutAutomaticSize
flowLayout.itemSize = UICollectionViewFlowLayoutAutomaticSize
}
مع فكرة استخدام السيارات تخطيط أنا لم تنفذ مندوب عن وجهة نظر المجموعة.
أواجه تخطيطًا غير متناسق للغاية ، وفي بعض الحالات ستظهر الخلية كما أريدها ، وفي حالات أخرى يتم اقتطاع التصنيفات ، وفي حالات أخرى تكون التصنيفات ضيقة للغاية وتعرض النص على ثلاثة أسطر.
لقد حاولت أشياء كثيرة ، بما في ذلك الاتصال
.sizeToFit()
على كل تسمية بعد تعيين خاصية النص ، بالإضافة إلى الاتصال
.setNeedsDisplay()
قبل أن تعود الخلية من cellForItemAt
أتساءل ما هي الطريقة الصحيحة للقيام بذلك مع قيود لوحة العمل. لقد عملت مع بعض الإجابات الشائعة على أسئلة مشابهة هنا على SO ، على الرغم من عدم وجود أي نجاح حقيقي.