Mis on joondamine?
sobes.tech AI
Vastus AI-lt
iOS arendamisel tähendab joondamine kasutajaliidese elementide (UIViews) paigutusmehhanisme üksteise või nende konteineri (superview) suhtes. Peamised joondamise meetodid:
-
Raamid (Frames): Iga View asukoha ja suuruse määramine (x, y, width, height) tema superview koordinaatsüsteemis. Sobib lihtsate, fikseeritud paigutuste jaoks.
let myView = UIView(frame: CGRect(x: 10, y: 20, width: 100, height: 50)) // myView asub punktis (10, 20) superview vasak ülanurgast. -
Auto Layout: Deklaratiivne paigutussüsteem, mis põhineb reeglitel (konstraintidel), mis määravad suhted Views vahel. Paindlik lähenemine kohanduvatele paigutustele, mis sobituvad erinevate ekraanisuuruste ja orientatsioonidega.
- Konstraints: Reeglid, mis määravad View omaduste piirangud (näiteks leading, trailing, top, bottom, centerY, centerX, width, height).
- Konstraintide prioriteet: Numbriline väärtus, mis näitab prioriteeti konfliktide lahendamisel (1-1000).
Näide NSLayoutConstraint kasutamisest:
let myView = UIView() myView.translatesAutoresizingMaskIntoConstraints = false // Keelame Auto Resizing Maski 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) ])Näide Layout Anchors kasutamisest:
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) ])Näide VFL (Visual Format Language) kasutamisest:
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)) -
Auto Resizing Mask: Lihtne joondamise süsteem, mis oli enne Auto Layouti. Annab võimaluse määrata, kuidas View peab venima või kokku tõmbuma, muutudes superview suuruses. Vähem paindlik kui Auto Layout ja sageli välja lülitatud (
translatesAutoresizingMaskIntoConstraints = false). -
Stack Views (UIStackView UIKit, VStack/HStack/ZStack SwiftUI): Konteinerid, mis automaatselt juhivad oma alamvaadete (arrangedSubviews) paigutust ja suurust vastavalt määratud omadustele (axis, alignment, distribution, spacing). Lihtsustavad lineaarsete ja kihiliste paigutuste loomist automaatse joondamisega.
let stackView = UIStackView() stackView.axis = .vertical // Vertikaalne telg stackView.alignment = .center // Joondamine keskjoonele stackView.distribution = .equalSpacing // Jaotuse suurus stackView.spacing = 10 // Vahemaa elementide vahel 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) // Lisame konstraintid stackViewile, et paigutada see superview'sse
Valitud joondamise meetod sõltub paigutuse keerukusest ja kohandamise nõuetest. Enamik kaasaegseid rakendusi eelistab Auto Layouti, sageli koos Stack View'idega.