Sobes.tech
Junior

Co je to vrstva (layer) v kontextu vývoje iOS?

sobes.tech AI

Odpověď od AI

(CALayer) je objekt, který řídí vizuální obsah (UIView). Pohledy používají vrstvy k vykreslení svého obsahu na obrazovku. Vrstvy nezpracovávají události dotyku, na rozdíl od pohledů.

Hlavní funkce vrstev:

  • Zobrazení obsahu (obrázky, text, grafika).
  • Řízení geometrie (pozice, velikost, rotace).
  • Nastavení vzhledu (pozadí, rámečky, stíny, zaoblené rohy).
  • Podpora animací (implicitní a explicitní).

Hlavní vlastnosti CALayer:

  • contents: Any? - Obsah vrstvy, obvykle CGImage.
  • frame: CGRect - Pozice a velikost vrstvy vzhledem k jejímu superlayer.
  • bounds: CGRect - Pozice a velikost vrstvy v jejím vlastním souřadném systému.
  • position: CGPoint - Střed vrstvy vzhledem k jejímu superlayer.
  • anchorPoint: CGPoint - Bod vrstvy, kolem kterého dochází k transformacím, v normalizovaných souřadnicích (od 0 do 1).
  • backgroundColor: CGColor? - Barva pozadí vrstvy.
  • borderColor: CGColor? - Barva rámečku vrstvy.
  • borderWidth: CGFloat - Šířka rámečku vrstvy.
  • cornerRadius: CGFloat - Poloměr zaoblených rohů.
  • shadowColor: CGColor? - Barva stínu.
  • shadowOpacity: Float - Průhlednost stínu (od 0 do 1).
  • shadowOffset: CGSize - Posun stínu.
  • shadowRadius: CGFloat - Poloměr rozostření stínu.
  • opacity: Float - Průhlednost vrstvy.
  • isHidden: Bool - Určuje, zda je vrstva skrytá.
  • transform: CATransform3D - Třírozměrná transformace vrstvy.

Hierarchie vrstev:

Vrstvy tvoří hierarchii podobnou hierarchii pohledů. Každá vrstva může mít superlayer a pole sublayers.

Použití:

Pohledy (UIView) mají svou hlavní vrstvu (layer), ke které lze přistupovat pro získání vizuálních vlastností a provádění animací. Do vrstvy pohledu lze přidávat další vrstvy pro vytvoření složitějších vizuálních efektů.

Příklad přístupu ke vrstvě pohledu:

// Změna barvy pozadí pohledu přes jeho vrstvu
myView.layer.backgroundColor = UIColor.red.cgColor

// Přidání stínu ke vrstvě pohledu
myView.layer.shadowColor = UIColor.black.cgColor
myView.layer.shadowOpacity = 0.5
myView.layer.shadowOffset = CGSize(width: 2, height: 2)
myView.layer.shadowRadius = 4