Sobes.tech
Middle+

Խոսեք iOS-ի Composition Layout-ի մասին և դրա օգտագործման մասին բարդ օգտագործողի ինտերֆեյսներ ստեղծելու համար։

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
}

Բարդ ինտերֆեյսներ ստեղծելու համար կարելի է համակցել տարբեր խմբերի և բաժինների տեսակներ, ավելացնել դեկորատիվ տարրեր և օգտագործել լրացուցիչ տարրեր:

Կոմպոզիցիոն դասավորությունը խիստ կապված է Diffable Data Sources (UICollectionViewDiffableDataSource) տեխնոլոգիայի հետ, որը հեշտացնում է տվյալների կառավարումը և փոփոխությունների անիմացիաները։ Այս երկու տեխնոլոգիաների համակցումը թույլ է տալիս ստեղծել ժամանակակից, արդյունավետ և հեշտ սպասարկվող օգտագործողի ինտերֆեյսներ։