Ինչպե՞ս են փոխվում օգտագործողի ինտերֆեյսի տարրերի բարձրությունը և լայնությունը iOS-ում սքրոլինգի ժամանակ։
sobes.tech AI
Պատասխան AI-ից
Ստանդարտ իրականացման դեպքում UIView տարրերի բարձրությունը և լայնությունը մնում են անփոփոխ UIScrollView կամ նրա ժառանգների (UITableView, UICollectionView) ներսում սքրոլի ժամանակ:
Տարրերի դիրքը (գույքի հատկության frame.origin արժեքը) փոխվում է bounds սքրոլ-վյուի նկատմամբ: bounds հատկությունը սքրոլ-վյուի փոխադրման ժամանակ տեղափոխվում է, բայց նրա չափը (bounds.size) մնում է անփոփոխ (համապատասխան է frame.size չափին):
Ներքին բովանդակության չափը, որը կարող է սքրոլ լինել, սահմանվում է contentSize հատկությամբ սքրոլ-վյուի: contentSize սահմանած տարրերը տեսանելի կլինեն սքրոլի ժամանակ:
Տարրերի չափի փոփոխությունը սքրոլի ժամանակ (պարալլաքս կամ ճնշում/համապատասխանություն) ինքնին տեղի չի ունենում և պահանջում է լրացուցիչ տրամաբանություն:
-
Իրականացում
UIScrollViewDelegate-ում:contentOffsetփոփոխության հետևում և ձեռքով փոփոխումframeկամboundsանհրաժեշտ տարրի:// Տարրի բարձրության փոփոխության օրինակ սքրոլի ժամանակ func scrollViewDidScroll(_ scrollView: UIScrollView) { let yOffset = scrollView.contentOffset.y let initialHeight: CGFloat = 200 let maxHeight: CGFloat = 300 // Սեղմում ներքև, ընդլայնում վերևում սքրոլի ժամանակ let newHeight = max(0, min(maxHeight, initialHeight - yOffset)) someView.frame.size.height = newHeight // դիրքի մշակումը, եթե արմատը վերև չէ } -
Օգտագործում
UIVisualEffectView: փոշոտության կամ բյուրեղության էֆեկտների համար, որոնք կարող են փոխվել սքրոլի ժամանակ՝ կախված ներքևի բովանդակությունից: -
Հարմարեցված լեյաուտներ:
UICollectionView-ում կարող է ստեղծվել հարմարեցվածUICollectionViewLayout՝ կառավարվելու համար բջիջների փոխարկումները սքրոլի ժամանակ: -
Անիմացիաներ: Օգտագործել
UIViewPropertyAnimatorկամ այլ անիմացիոն մեխանիզմներ, որոնք սկսվում են սքրոլի ժամանակ:
Այսպիսով, հիմնական վարքագիծը՝ անփոփոխ չափը: Յուրաքանչյուր չափի փոփոխություն — դա հատուկ իրականացման արդյունք է։