iOS'dagi Composition Layout va uning murakkab foydalanuvchi interfeyslarini yaratish uchun foydalanilishi haqida gapiring.
sobes.tech AI
AIdan javob
Kümelenebilir Layout, iOS 13-da təqdim olunan kolleksiya düzənlərinin (UICollectionView) yaradılması üçün çevik mexanizmdir. Bu, bölmələr və elementlərin strukturunu deklarativ şəkildə təsvir etməyə imkan verir və mürəkkəb və uyğunlaşa bilən istifadəçi interfeyslərinin yaradılmasını sadələşdirir.
Əsas üstünlüklər:
- Bloklardan quruluş: Layout, kiçik hissələrdən (elementlər, qruplar, bölmələr) ibarətdir.
- Çeviklik: Müxtəlif növ layoutları (siyahılar, şəbəkələr, şaquli/yatay sürüşmə ilə qruplar) dəstəkləyir.
- Uyğunlaşma: Ekran ölçüsü və cihazın istiqamət dəyişikliklərinə asanlıqla uyğunlaşır.
- Deklarativlik: Layout-un təsviri ənənəvi
UICollectionViewFlowLayoutilə müqayisədə daha anlaşılan və ifadəli olur. - Performans: Çox sayda elementlə işləmək üçün optimallaşdırılıb.
Əsas komponentlər:
NSCollectionLayoutItem: Kolleksiyadakı elementi təsvir edir. Onun ölçüsünü konteyner qrupuna görə müəyyən edir.NSCollectionLayoutGroup: Elementlər qrupunu təsvir edir. Vertikal, horizontal və ya xüsusi ola bilər. Qrupun ölçüsünü onun daxil olduğu bölməyə görə müəyyən edir.NSCollectionLayoutSection: Kolleksiyadakı bölməni təsvir edir. Qrupları ehtiva edir və onların yerləşdirilməsini idarə edir. Bölmənin davranışını müəyyən edir (məsələn, sürüşmə).NSCollectionLayoutBoundarySupplementaryItem: Bölməyə əlavə elementlər əlavə etmək üçün istifadə olunur (başlıqlar, altbilgilər).UICollectionViewCompositionalLayout: Bölmələri yekun layout-ə toplayan layout sinfi.
Yatay sürüşmə ilə sadə bölmə yaratma nümunəsi:
import UIKit
func createLayout() -> UICollectionViewLayout {
// Element
let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0),
heightDimension: .fractionalHeight(1.0))
let item = NSCollectionLayoutItem(layoutSize: itemSize)
// Qrup
let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(0.9),
heightDimension: .absolute(200))
let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize,
subitems: [item])
group.interItemSpacing = .fixed(10) // Elementlər arasındakı məsafə
// Bölmə
let section = NSCollectionLayoutSection(group: group)
section.orthogonalScrollingBehavior = .continuous // Yatay sürüşmə
section.contentInsets = NSDirectionalEdgeInsets(top: 10, leading: 10, bottom: 10, trailing: 10) // Kənar boşluqları
section.interGroupSpacing = 10 // Qruplar arasındakı məsafə
// Layout
let layout = UICollectionViewCompositionalLayout(section: section)
return layout
}
Daha mürəkkəb interfeyslər yaratmaq üçün müxtəlif qrup və bölmə növlərini birləşdirə, dekorativ elementlər əlavə edə və əlavə elementlərdən istifadə edə bilərsiniz.
Kümelenebilir Layout, Diffable Data Sources (UICollectionViewDiffableDataSource) ilə sıx əlaqəlidir və bu, kolleksiya məlumatlarının idarə olunmasını və dəyişikliklərin animasiyasını asanlaşdırır. Bu iki texnologiyanın birləşməsi müasir, səmərəli və asan saxlanılan istifadəçi interfeyslərinin yaradılmasına imkan verir.