Kas ir izlīdzināšana?
sobes.tech AI
Atbilde no AI
iOS izstrādē izlīdzināšana attiecas uz elementu (UIViews) izvietojuma mehānismiem attiecībā viens pret otru vai to konteineru (supperview). Galvenie izlīdzināšanas veidi:
-
Rāmji (Frames): Pozīcijas un izmēra iestatīšana (x, y, width, height) katram View superview koordinātu sistēmā. Der vienkāršiem, fiksētiem maketiem.
let myView = UIView(frame: CGRect(x: 10, y: 20, width: 100, height: 50)) // myView tiks novietots 10, 20 punktos no superview augšējā kreisā stūra. -
Auto Layout: Deklaratīva elementu izvietojuma sistēma, balstīta uz noteikumiem (konstraintiem), kas nosaka attiecības starp Views. Elastīgs pieeja adaptīviem maketiem, kas pielāgojas dažādiem ekrāna izmēriem un orientācijām.
- Konstraints: Noteikumi, kas nosaka ierobežojumus View īpašībām (piemēram, leading, trailing, top, bottom, centerY, centerX, width, height).
- Konstraints prioritāte: Skaitliska vērtība, kas norāda svarīgumu konfliktu risināšanā (1-1000).
Piemērs ar NSLayoutConstraint:
let myView = UIView() myView.translatesAutoresizingMaskIntoConstraints = false // Izslēdz Auto Resizing Mask 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) ])Piemērs ar Layout Anchors:
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) ])Piemērs ar VFL (Visual Format Language):
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: Vienkārša izlīdzināšanas sistēma, kas bija pirms Auto Layout. Atļauj noteikt, kā View jāizstiepj vai jāsamazina, mainoties superview izmēram. Mazāk elastīga nekā Auto Layout, un bieži tiek atslēgta, izmantojot Auto Layout (
translatesAutoresizingMaskIntoConstraints = false). -
Stack Views (UIStackView UIKit, VStack/HStack/ZStack SwiftUI): Konteineri, kas automātiski pārvalda savu bērnu View (arrangedSubviews) izvietojumu un izmēru, pamatojoties uz noteiktajām īpašībām (axis, alignment, distribution, spacing). Vienkāršo līniju un daudzslāņu maketēšanu ar automātisku izlīdzināšanu.
let stackView = UIStackView() stackView.axis = .vertical // Vertikālā ass stackView.alignment = .center // Izlīdzinājums centrā stackView.distribution = .equalSpacing // Izkliedes sadalījums stackView.spacing = 10 // Attālums starp elementiem 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) // Pievienojam konstraintus pašam stackView, lai to novietotu superview
Izvēlētais izlīdzināšanas metode ir atkarīga no maketa sarežģītības un adaptācijas prasībām. Lielākā daļa mūsdienu lietojumprogrammu izmanto Auto Layout, bieži kopā ar Stack Views.