Care este scopul UIWindow? (Programare, Ios, Cocoa Touch, Uikit, Uiwindow)

hgwhittle a intrebat.
a intrebat.

Întotdeauna am văzut referințe la „fereastra” unei aplicații și am văzut că AppDelegates au de obicei un UIWindow proprietate numită „window”. Așadar, mă întreb cum să percep acest lucru UIWindow obiect. Văd că este o subclasă a lui UIView, deci cred că, din punct de vedere tehnic, este un View, nu? Deci, ar fi sigur să spun că este ca un fel de Superview al unei întregi aplicații? De asemenea, când și de ce aș putea face referire la el? Ce valoare adaugă?

Știu că sunt o mulțime de întrebări, dar vreau doar un context general cu privire la UIWindow ar fi binevenit.

Comentarii

  • Cred că este 1. pur și simplu o moștenire AppKit, 2. suport pentru detalii de implementare internă (UIAlertView are propria sa fereastră, de exemplu, pentru a putea capta complet evenimentele tactile). – user529758
  • A se vedea Apple’s Rolul ferestrei într-o aplicație iOS. –  > Por Rob.
3 răspunsuri
Kevin

S-ar putea să doriți să verificați Despre ferestre și vizualizări din Ghidul de programare a vizualizărilor pentru iOS.

În iOS, folosești ferestre și vizualizări pentru a prezenta conținutul aplicației tale pe ecran. Ferestrele nu au ele însele niciun conținut vizibil, dar oferă un container de bază pentru vizualizările aplicației dvs. Vizualizările definesc o porțiune a unei ferestre pe care doriți să o umpleți cu un anumit conținut. De exemplu, puteți avea vizualizări care afișează imagini, text, forme sau o combinație a acestora. De asemenea, puteți utiliza vizualizările pentru a organiza și gestiona alte vizualizări.

Rețineți, de asemenea, că o aplicație iOS are, de obicei, o singură fereastră. O excepție ar fi, în cazul în care o aplicație afișează conținut pe un ecran extern.

Comentarii

  • Oarecum târziu, dar ultima dvs. observație este de fapt foarte neadevărată. O aplicație are de obicei mai multe ferestre, și anume tastatura, vizualizările de alertă, foile de acțiune, UIReferenceLibraryViewController (controlerul de vizualizare a dicționarului atunci când se selectează „Define”), playerul video fullscreen etc. –  > Por Leo Natan.
  • @LeoNatan Nu este chiar adevărat. Citez din documentația Apple: „Aplicațiile nu își modifică conținutul prin afișarea de noi ferestre. Pentru a schimba conținutul afișat, schimbați în schimb vizualizările cele mai frontale ale ferestrei.” Majoritatea aplicațiilor iOS creează și utilizează o singură fereastră pe parcursul vieții lor. Această fereastră se întinde pe întregul ecran principal al dispozitivului și este încărcată din fișierul nib principal al aplicației (sau creată prin programare) la începutul vieții aplicației. Cu toate acestea, dacă o aplicație suportă utilizarea unui afișaj extern, poate crea o fereastră suplimentară pentru a afișa conținut pe acel afișaj extern.” –  > Por multitudes.
Parth

UIWindow
Prezentarea uneia sau mai multor vizualizări pe un ecran este coordonată de obiectul UIWindow. În aplicația iOS, de obicei, aplicația are doar o singură fereastră. în timp ce View multiple. Atât ferestrele, cât și vizualizările sunt utilizate pentru a prezenta conținutul aplicației dumneavoastră pe ecran. Ferestrele oferă un container de bază pentru vizualizările aplicației dumneavoastră, dar nu au niciun conținut vizibil. Vizualizarea este o porțiune a unei ferestre pe care o puteți umple cu un anumit conținut. de exemplu, puteți avea vizualizări care afișează imagini, text.

ProblemeStucks

Faizyy

Fereastra este ca un fel de container de interfață utilizator de vârf pentru orice aplicație iOS. Ea se află deasupra tuturor vizualizărilor și viewControllers.

Întrebați-mă de ce este necesar, Iar eu vă răspund că face ca structura UI să fie mai clară în ceea ce privește ierarhia vizualizărilor și gestionarea evenimentelor. De exemplu, orice eveniment al utilizatorului, atunci când nu este gestionat de vizualizarea cea mai apropiată, urcă în ierarhia vizualizărilor până la obiectul fereastră, dacă nicio altă vizualizare din ierarhie nu îl gestionează.

Un alt exemplu este rootViewController al unei ferestre, care gestionează detaliile specifice vizualizării aplicației.

O aplicație are în general o singură fereastră. Dar am lucrat la o aplicație care folosea un cadru partajat pentru autentificarea utilizatorilor. Și acolo, am avut o fereastră separată specifică acelui cadru de autentificare. De ce o fereastră separată, vă întrebați, și iarăși o iau de la capăt, există 2 cazuri de utilizare importante,

  1. După cum am menționat, era un cadru de autentificare partajat. Prin urmare, diferite aplicații puteau folosi același cadru pentru autentificarea utilizatorilor, care își folosea propria fereastră pentru ecranul de conectare etc.
  2. A existat un timp de expirare a sesiunii, după care trebuia să apară un ecran de autentificare, indiferent de ceea ce face utilizatorul în acel moment pe ecran. Acest lucru poate deveni foarte complicat dacă nu folosim o fereastră separată.

Sper că puteți înțelege esența unei ferestre după ce ați citit aceste exemple.