Junior
Auto Layout nədir və çərçivələrlə istifadə olunan layout-dan necə fərqlənir?
sobes.tech Süni İntellekt
AI-dan cavab
Auto Layout, məhdudiyyətlər (constraints) əsasında UI elementlərinin bir-birinə və superview-ə nisbətən yerləşdirilməsini müəyyən edən layout sistemidir.
Frame istifadə edilən layout-dan fərqləri:
- Əsas: Auto Layout, yerləşdirməni müəyyən etmək üçün qaydalar (constraints) toplusu istifadə edir, frame isə sabit koordinatlar və ölçülərdir.
- Uyğunlaşma: Auto Layout, ekran ölçülərinə, cihazın yönümünə və dinamik mətn ölçüsünə avtomatik uyğunlaşır. Frame-lər hər vəziyyət üçün əl ilə hesablamalar və yeniləmələr tələb edir.
- Əl ilə dəyişiklik: Auto Layout-da bir elementdə dəyişiklik, adətən digər elementlərin constraints-ə uyğun avtomatik yenidən qurulmasına səbəb olur. Frame-lərdə isə hər dəyişiklik üçün koordinat və ölçülərin əl ilə yenilənməsi lazım olur.
- Çətinlik: Sadə statik interfeyslər üçün frame ilə layout daha sürətli ola bilər. Çox mürəkkəb, dinamik və uyğunlaşan interfeyslər üçün Auto Layout daha asan saxlanılır və daha az səhv ehtimalı ilə işləyir.
- Həll olunan məsələlər: Auto Layout, müxtəlif cihazlarda və mühit parametrlərində düzgün göstərilməli olan uyğunlaşan interfeyslər yaratmaq üçün idealdır. Frame-lər, elementlərin dəqiq yerləşdirilməsi üçün daha uyğundur, xüsusən uyğunlaşma prioritet deyilsə və ya çox sadə, statik layoutlar üçün.
Auto Layout-da constraints nümunəsi:
// Düymə yaradılması
let button = UIButton()
button.translatesAutoresizingMaskIntoConstraints = false // Auto Layout üçün vacib
// Düyməni view-ə əlavə etmək
view.addSubview(button)
// Constraints təyin etmək (üfüqi mərkəz, aşağıdan 20pt məsafədə)
NSLayoutConstraint.activate([
button.centerXAnchor.constraint(equalTo: view.centerXAnchor),
button.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -20)
])
Frame istifadə edilən layout nümunəsi:
// Düymə yaradılması
let button = UIButton()
// Frame təyin etmək (üfüqi mərkəz, aşağıdan 20pt məsafədə)
let buttonWidth: CGFloat = 100
let buttonHeight: CGFloat = 40
let x = (view.bounds.width - buttonWidth) / 2 // Əl ilə hesablanmış X
let y = view.bounds.height - buttonHeight - 20 // Əl ilə hesablanmış Y
button.frame = CGRect(x: x, y: y, width: buttonWidth, height: buttonHeight)
// Düyməni view-ə əlavə etmək
view.addSubview(button)
// View-in ölçüsü və ya yönüm dəyişdikdə, frame əl ilə yenidən hesablanmalıdır