Junior
Čo je vrstva (layer) v kontexte vývoja iOS?
sobes.tech AI
Odpoveď od AI
Vrstva (CALayer) je objekt, ktorý riadi vizuálny obsah pohľadu (UIView). Pohľady používajú vrstvy na vykreslenie svojho obsahu na obrazovke. Vrstvy neobsluhujú udalosti dotyku, na rozdiel od pohľadov.
Hlavné funkcie vrstiev:
- Zobrazenie obsahu (obrázky, text, grafika).
- Riadenie geometrie (poloha, veľkosť, otáčanie).
- Nastavenie vzhľadu (pozadie, okraje, tiene, zaoblené rohy).
- Podpora animácií (nepriame a priame).
Hlavné vlastnosti CALayer:
contents:Any?- Obsah vrstvy, zvyčajneCGImage.frame:CGRect- Poloha a veľkosť vrstvy vzhľadom na jejsuperlayer.bounds:CGRect- Poloha a veľkosť vrstvy v jej vlastnom súradnicovom systéme.position:CGPoint- Stred vrstvy vzhľadom na jejsuperlayer.anchorPoint:CGPoint- Bod vrstvy, okolo ktorého prebiehajú transformácie, v normalizovaných súradniciach (od 0 do 1).backgroundColor:CGColor?- Farba pozadia vrstvy.borderColor:CGColor?- Farba okraja vrstvy.borderWidth:CGFloat- Šírka okraja vrstvy.cornerRadius:CGFloat- Polomer zaoblenia rohov.shadowColor:CGColor?- Farba tieňa.shadowOpacity:Float- Nepriehľadnosť tieňa (od 0 do 1).shadowOffset:CGSize- Posunutie tieňa.shadowRadius:CGFloat- Polomer rozmazania tieňa.opacity:Float- Nepriehľadnosť vrstvy.isHidden:Bool- Určuje, či je vrstva skrytá.transform:CATransform3D- Trojrozmerná transformácia vrstvy.
Hierarchia vrstiev:
Vrstvy tvoria hierarchiu, podobnú hierarchii pohľadov. Každá vrstva môže mať superlayer a pole sublayers.
Použitie:
Pohľady (UIView) majú svoju hlavnú vrstvu (layer), cez ktorú je možné pristupovať k jej vizuálnym vlastnostiam a vykonávať animácie. K vrstve pohľadu je možné pridávať ďalšie vrstvy na vytvorenie zložitejších vizuálnych efektov.
Príklad prístupu ku vrstve pohľadu:
// Zmena farby pozadia pohľadu cez jeho vrstvu
myView.layer.backgroundColor = UIColor.red.cgColor
// Pridanie tieňa ku vrstve pohľadu
myView.layer.shadowColor = UIColor.black.cgColor
myView.layer.shadowOpacity = 0.5
myView.layer.shadowOffset = CGSize(width: 2, height: 2)
myView.layer.shadowRadius = 4