Sobes.tech
Junior — Middle

Hogyan kapcsolódnak a Layer tulajdonságai a Frame és Bounds-hoz, és milyen hatással vannak az elem megjelenítésére?

sobes.tech MI

Válasz az MI-től

iOS-ban minden CALayer-nek három kulcsfontosságú tulajdonsága van, amelyek a méretéhez és pozíciójához kapcsolódnak: frame, bounds és position.

  • bounds: egy téglalap (CGRect), amely meghatározza a réteg belső méreteit a saját koordináta-rendszerében. Általában a bounds eredete (0,0), és a méret a réteg szélességét és magasságát jelenti.

  • frame: egy téglalap, amely leírja a réteg helyzetét és méretét a szülőréteg (superlayer) koordinátáiban. A frame a bounds, a position és a transform alapján kerül kiszámításra.

  • position: egy pont a superlayer koordinátáiban, amely megfelel a réteg anchorPoint-jának.

Kapcsolatok:

  • A bounds módosítása a réteg belső méretét változtatja anélkül, hogy befolyásolná a pozícióját.
  • A frame módosítása a réteg helyzetét és méretét változtatja a superlayer-ben, és a bounds és a position újraszámítható.
  • A position és az anchorPoint határozza meg pontosan, hol helyezkedik el a réteg a superlayer-ben.

Hatás a megjelenítésre:

  • Ha a bounds változik, a réteg tartalmának mérete változik.
  • Ha a frame változik, a réteg helyzete és mérete a képernyőn változik.
  • Ennek a kapcsolatrendszernek a rossz értelmezése váratlan megjelenést eredményezhet, például eltolódást vagy torzulást.

Példa:

let layer = CALayer()
layer.bounds = CGRect(x: 0, y: 0, width: 100, height: 100) // réteg mérete
layer.position = CGPoint(x: 50, y: 50) // pozíció a superlayer-ben
// a frame CGRect(x: 0, y: 0, width: 100, height: 100) lesz, figyelembe véve az anchorPoint-ot (alapértelmezett 0.5,0.5)

Ezért a frame egy származtatott tulajdonság, amely a bounds, a position és az anchorPoint függvénye, és ez határozza meg, hogyan jelenik meg a réteg a hierarchiában.