Дар бораи Composition Layout дар iOS ва истифодаи он барои эҷоди интерфейсҳои мураккаб гап занед.
sobes.tech AI
Ҷавоб аз AI
Тартибсозии композиционӣ — механизми чандир барои эҷоди тартибҳои маҷмӯаҳо (UICollectionView), ки дар iOS 13 муаррифӣ шудааст. Он имкон медиҳад, ки сохтор ва унсурҳои қисмҳоро ба таври декларативӣ тавсиф кард, ки ин ба осонтар кардани эҷоди UI-ҳои мураккаб ва мутобиқшаванда кӯмак мекунад.
Афзалиятҳои асосӣ:
- Тавзеҳот аз блокҳо: Тартиб аз қисмҳои хурдтар (items, groups, sections) ташкил мешавад.
- Чандирӣ: Тартибҳои гуногунро (феҳристҳо, шабакаҳо, гурӯҳҳо бо гардиши уфуқӣ/суръат) дар як маҷмӯа дастгирӣ мекунад.
- Мутобиқшавандагӣ: Ба осонӣ ба тағирот дар андозаи экран ва самтгирии дастгоҳ мутобиқ мешавад.
- Декларативӣ: Тавсифи тартиб равшан ва ифодаӣ аст, нисбат ба
UICollectionViewFlowLayoutандохтатар. - Камаронӣ: Барои кор бо миқдори зиёди унсурҳо оптимизатсия шудааст.
Компонентҳои асосӣ:
NSCollectionLayoutItem: Тавсифи унсур дар маҷмӯа. Андозаи онро нисбат ба гурӯҳе, ки дар он аст, муайян мекунад.NSCollectionLayoutGroup: Тавсифи гурӯҳи унсурҳо. Мумкин аст вертикалӣ, уфуқӣ ё фармоишӣ бошад. Андозаи гурӯҳро нисбат ба қисм муайян мекунад.NSCollectionLayoutSection: Тавсифи қисм дар маҷмӯа. Гурӯҳҳоро дар бар мегирад ва тартиби онҳоро идора мекунад. Ҳаволаи қисмро муайян мекунад (масалан, гардиш).NSCollectionLayoutBoundarySupplementaryItem: Барои илова кардани унсурҳои иловагӣ ба қисм (сарлавҳаҳо, поёнҳо) истифода мешавад.UICollectionViewCompositionalLayout: Класс тартиб, ки қисмҳоро ба тартиби ниҳоӣ ҷамъ мекунад.
Масалан барои эҷоди як қисмати содда бо гардиши уфуқӣ:
import UIKit
func createLayout() -> UICollectionViewLayout {
// Унсур
let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0),
heightDimension: .fractionalHeight(1.0))
let item = NSCollectionLayoutItem(layoutSize: itemSize)
// Гурӯҳ
let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(0.9),
heightDimension: .absolute(200))
let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize,
subitems: [item])
group.interItemSpacing = .fixed(10) // Фосила байни унсурҳо дар гурӯҳ
// Қисм
let section = NSCollectionLayoutSection(group: group)
section.orthogonalScrollingBehavior = .continuous // гардиши уфуқӣ
section.contentInsets = NSDirectionalEdgeInsets(top: 10, leading: 10, bottom: 10, trailing: 10) // Маҳдудиятҳо
section.interGroupSpacing = 10 // Фосила байни гурӯҳҳо
// Тартиб
let layout = UICollectionViewCompositionalLayout(section: section)
return layout
}
Барои сохтани интерфейсҳои мураккабтар, метавон намудҳои гуногуни гурӯҳҳо ва қисмҳоро омехта кард, унсурҳои ороишӣ илова кард ва унсурҳои иловагӣ истифода бурд.
Тартибсозии композиционӣ бо UICollectionViewDiffableDataSource ҳамкории наздик дорад, ки идоракунии маълумот ва анимацияҳоро осон мекунад. Ин ду технология дар якҷоягӣ имкон медиҳанд, ки интерфейсҳои муосир, самаранок ва ба осонӣ нигоҳдоштаро эҷод кунанд.