Həll olunma nədir?
sobes.tech Süni İntellekt
AI-dan cavab
iOS inkişafında hizalama istifadəçi interfeys elementlərinin (UIViews) bir-birinə və ya onların konteynerinə (superview) nisbətən yerləşdirilməsi mexanizmlərinə aiddir. Əsas yanaşmalar:
-
Frames: Hər bir View-in mövqeyini və ölçüsünü (x, y, width, height) onun superview koordinat sistemində təyin etmək. Sadə, statik maketlər üçün uyğundur.
let myView = UIView(frame: CGRect(x: 10, y: 20, width: 100, height: 50)) // myView superview-in yuxarı sol küncündən (10, 20) yerləşəcək. -
Auto Layout: Elementlərin yerləşdirilməsi üçün deklarativ sistem, qaydalar (constraints) vasitəsilə Views arasında əlaqələri müəyyən edir. Flekssibil, ekran ölçülərinə və orientasiyalara uyğunlaşan maketlər üçün.
- Constraints: View-in xüsusiyyətlərinə məhdudiyyətlər qoyur (məsələn, leading, trailing, top, bottom, centerY, centerX, width, height).
- Constraint prioriteti: Konfliktlərin həllində constraint-in əhəmiyyətini göstərən ədədi dəyər (1-1000).
NSLayoutConstraint ilə constraints nümunəsi:
let myView = UIView() myView.translatesAutoresizingMaskIntoConstraints = false superview.addSubview(myView) NSLayoutConstraint.activate([ myView.leadingAnchor.constraint(equalTo: superview.leadingAnchor, constant: 20), myView.trailingAnchor.constraint(equalTo: superview.trailingAnchor, constant: -20), myView.topAnchor.constraint(equalTo: superview.topAnchor, constant: 80), myView.heightAnchor.constraint(equalToConstant: 100) ])Layout Anchors ilə constraints nümunəsi:
let myView = UIView() myView.translatesAutoresizingMaskIntoConstraints = false superview.addSubview(myView) NSLayoutConstraint.activate([ myView.centerXAnchor.constraint(equalTo: superview.centerXAnchor), myView.centerYAnchor.constraint(equalTo: superview.centerYAnchor), myView.widthAnchor.constraint(equalToConstant: 200), myView.heightAnchor.constraint(equalToConstant: 150) ])VFL (Visual Format Language) ilə constraints nümunəsi:
let myView = UIView() myView.translatesAutoresizingMaskIntoConstraints = false superview.addSubview(myView) let views: [String: UIView] = ["myView": myView] let metrics: [String: CGFloat] = ["margin": 20] NSLayoutConstraint.activate(NSLayoutConstraint.constraints(withVisualFormat: "H:|-margin-[myView]-margin-|", options: [], metrics: metrics, views: views)) NSLayoutConstraint.activate(NSLayoutConstraint.constraints(withVisualFormat: "V:|-80-[myView(100)]", options: [], metrics: nil, views: views)) -
Autoresizing Mask: Sadə yerləşdirmə sistemi, Auto Layout-dan əvvəlki. View-in ölçüsü dəyişdikdə necə genişlənəcəyini və sıxılacağını müəyyən edir. Auto Layout ilə istifadə edildikdə deaktiv edilir (
translatesAutoresizingMaskIntoConstraints = false). -
Stack Views (UIStackView UIKit-də, VStack/HStack/ZStack SwiftUI-də): Uşaqlar View-lərinin (arrangedSubviews) yerləşdirilməsini və ölçüsünü avtomatik idarə edən konteynerlər. Axis, alignment, distribution, spacing kimi xüsusiyyətlərlə.
let stackView = UIStackView() stackView.axis = .vertical stackView.alignment = .center stackView.distribution = .equalSpacing stackView.spacing = 10 let label = UILabel() label.text = "Hello" let button = UIButton(type: .system) button.setTitle("Tap Me", for: .normal) stackView.addArrangedSubview(label) stackView.addArrangedSubview(button) superview.addSubview(stackView) // StackView-i yerləşdirmək üçün constraintlər əlavə edilir
Yerləşdirmə metodunun seçimi maketin mürəkkəbliyinə və adaptivlik tələblərinə bağlıdır. Ən çox müasir tətbiqlərdə Auto Layout, tez-tez Stack Views ilə birlikdə üstün tutulur.