Sobes.tech
Middle+

Waarvoor dienen de eigenschappen van 'Prioriteit van compressieweerstand'?

sobes.tech AI

Antwoord van AI

Bepaalt, hoe weerstandsvermogen van een view ten opzichte van andere views wordt bepaald bij onvoldoende vrije ruimte.

Eigenschappen Compressie Weerstand Prioriteit:

  • Elke dimensie (Horizontaal, Verticaal) heeft zijn eigen prioriteit.
  • Waardebereik: 1 (laagste) tot 1000 (hoogste, UILayoutPriorityRequired).
  • Een view met een hogere prioriteit zal meer weerstand bieden tegen compressie dan een view met een lagere prioriteit.
  • Prioriteit 1000 garandeert dat de view niet onder zijn intrinsieke inhoudsgrootte wordt gecomprimeerd in welke omstandigheden dan ook, indien mogelijk.

Gebruik:

  • Label met dynamische tekst: Als je meerdere UILabels hebt die teksten van verschillende lengtes kunnen tonen, helpt het gebruik van prioriteiten te bepalen welke als eerste wordt gecomprimeerd als ze niet op het scherm passen.
  • Knoppen: Om te voorkomen dat de tekst op een knop wordt afgesneden, kun je een hoge prioriteit instellen voor de UILabel ervan met behulp van Compressie Weerstand Prioriteit.
  • Complexe lay-outs: In complexe Auto Layout lay-outs worden prioriteiten gebruikt om ambiguïteiten op te lossen bij gebrek aan ruimte.

Voorbeeld: Twee UILabels in een horizontale stack.

let label1 = UILabel()
label1.text = "Korte tekst"
label1.backgroundColor = .red

let label2 = UILabel()
label2.text = "Zeer zeer zeer lange tekst"
label2.backgroundColor = .blue

let stackView = UIStackView(arrangedSubviews: [label1, label2])
stackView.axis = .horizontal
stackView.distribution = .fill // Vult de ruimte, maar kan inhoud comprimeren

// Standaard zijn de prioriteiten gelijk (meestal 750).
// Beide labels worden proportioneel gecomprimeerd.

// Stel een hoge prioriteit in voor label1
label1.setContentCompressionResistancePriority(.required, for: .horizontal) // 1000
// label2 behoudt zijn standaard prioriteit (750)

// Nu, bij gebrek aan ruimte, wordt label2 meer gecomprimeerd,
// zodat label1 zijn grootte behoudt.

Relatie met Content Hugging Prioriteit (Inhoud Omarming Prioriteit):

  • Content Hugging Prioriteit: Bepaalt hoe terughoudend een view is om groter te worden dan zijn intrinsieke inhoudsgrootte bij extra vrije ruimte.
  • Hoge Content Hugging Prioriteit = de view "omarmt" zijn inhoud en wordt niet uitgebreid.
  • Hoge Compressie Weerstand Prioriteit = de view weerstaat compressie en wordt niet verkleind.

Deze twee eigenschappen werken samen om Auto Layout te helpen de ruimte correct tussen de views te verdelen.