Inspektory pro XIBy - MujMAC.cz - Apple, Mac OS X, Apple iPod

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Odkud pochází fotografka Anne Erhard?

V dnešní soutěži hrajeme o:

Seriály

Více seriálů



Informace

Inspektory pro XIBy

7. září 2011, 00.00 | Inspektory jsou jedním z nejdůležitějších prvků editoru XIBů: právě jejich prostřednictvím nastavujeme nejrůznější atributy objektů, jež síť tvoří – to, co bychom jinak museli dělat programově pomocí odpovídajících služeb API.

Dnes se proto na ně podíváme podrobněji a řekneme si o nich několik možná ne zcela samozřejmých věcí.

Připomeňme, že v pravém sloupci okna Xcode je vždy k dispozici dvojice standardních inspektorů. Prvý z nich pod ikonkou, připomínající list papíru, obsahuje informace o aktuálně editovaném souboru; druhý, jehož ikonka dvojicí vlnek evokuje nejspíše asi dovolenou u moře, nabízí stručnou nápovědu (jež jen málokdy pomůže a stejně je obvykle, neví-li člověk vše potřebné z hlavy, otevřít detailní popis API v okně Organizer).

Začneme proto až třetí ikonkou, tou, jež na pohled připomíná okénko nějakého formuláře.

Inspektor identity

Prvý z inspektorů specifických pro práci s objekty v sítích XIB je poměrně jednoduchý, ale velmi důležitý. Vypadá takto:

Jeho jediným podstatným prvkem je prvé textové pole v oddílu "Custom Class": právě zde můžeme určit aktuální podtřídu, jež má po zavedení NIBu do paměti nahradit třídu obecnější, jak jsme si to popsali v části "Specifické podtřídy" předminulého článku.

Na obrázku výše vidíme, že ačkoli v XIBu explicitně pracujeme s objektem třídy UIViewController, po zavedení do paměti bude na jeho místě stát instance třídy FirstViewController, tedy přesně to, co v aplikaci potřebujeme. Tuto službu můžeme využít pro libovolný objekt, ale naprosto běžná je právě u řídicích objektů rámců (a u rámců samotných, ačkoli v iOSu – na rozdíl od Mac OS X – využíváme vlastní podtřídy rámců relativně méně často).

Klepnutím na šedou šipku při pravém okraji textového pole si můžeme otevřít rozhraní odpovídající třídy; otevření nabídky zobrazí všechny třídy v projektu, jež lze na daný objekt rozumně aplikovat.

Ostatní prvky inspektoru identity nejsou obvykle zapotřebí a můžeme je prozatím klidně ignorovat. Poměrně podstatný zde snad je panel pro nastavení atributů externího přístupu ("accessibility"), ale tím se v současnosti nezabýváme (a navíc standardní nastavení je většinou v pořádku).

Inspektor atributů

Jak jsme si řekli už minule, inspektor atributů je asi nejdůležitějším a nejvyužívanějším prvkem editoru XIBů; rozhodně je také nejsložitější. Navíc jeho obsah samozřejmě závisí na konkrétním zvoleném objektu (to samozřejmě do jisté míry platí pro libovolný inspektor, ale u inspektoru atributů je to nejmarkantnější). Nejprve si proto řekneme několik obecných pravidel pro práci s tímto inspektorem; konkrétními inspektory pro konkrétní třídy se budeme zabývat samostatně později podle potřeby.

Inspektor atributů obsahuje panely – jsou-li v Xcode k dispozici – jak pro třídu zvoleného objektu, tak i pro všechny její nadtřídy. Na obrázku vidíme jako příklad inspektor atributů objektu Token Field; jeho sekce jsou uzavřené, aby bylo dobře vidět, jak reflektují postupně třídy NSTokenField, NSTextField, NSControl a NSView (další nadtřídy NSResponder a NSObject už vlastní inspektory nemají):

To je velmi logické: každá z tříd v linii dědičnosti přináší nějaké vlastní atributy, a je proto samozřejmé, abychom je mohli měnit vždy prostřednictvím adekvátního inspektoru.

Co naopak logické není je nemožnost doplnit specifický inspektor pro naše vlastní podtřídy; v původním Interface Builderu to nebyl žádný problém, ale Xcode 4 bohužel tuto možnost nepodporuje. Můžeme jen doufat, že ji Apple brzy opět doplní, protože bez ní je práce s objekty z vlastních nebo 3rd party knihoven extrémně nepohodlná.

V některých případech přibudou ještě speciální panely podle aktuální situace – např. u kořenových objektů XIBů pro iOS lze bez ohledu na jejich typ volit velikost podle simulované velikosti obrazovky zařízení v bloku "Simulated Metrics", a to samostatně pro iPad i iPhone:

Inspektor rozměrů

Třetí z inspektorů slouží pro určení rozměrů a automatických změn velikostí rámců:

V jeho horní části můžeme přímo zadat umístění a velikost v rámci souřadné soustavy nadřízeného rámce. Pomocí panelu vlevo si můžeme vyžádat zobrazení (a vkládání) pozice kteréhokoli z devíti základních bodů; Xcode automaticky provede potřebné přepočty.

Často bývají některá z polí šedá a nelze jejich obsah měnit: tak je tomu u grafických prvků, jejichž velikost je z nějakého důvodu fixní. Ve výjimečných případech pak sice můžeme velikost změnit programově např. pomocí služby setFrame:, ale na výsledek se obvykle nedá koukat: Apple většinou dobře ví, proč velikosti některých prvků fixuje. Leckdy také jde o čistě technickou záležitost, kdy grafický prvek využívá podkladového obrázku.

Pro určování rozměrů a polohy rámců je samozřejmě mnohdy vhodnější hlavní pracovní oblast editoru, kde můžeme objekty přímo přemísťovat pomocí myši nebo klávesnice (s přepínačem Shift šipky posunují objekty o větší krok), a měnit tak jejich rozměry.

Velmi důležitá dolní část inspektoru umožňuje specifikovat, jak se budou rozměry rámce měnit, pokud se změnil rozměr rámce nadřízeného. Původní Interface Builder obsahoval velmi intuitivní přepínače ve formě "pružin" a "pevných drátů"; z nepochopitelných důvodů je firma Apple nahradila daleko méně zřejmými "šipkami a íčky", jež vidíme na obrázku. Naštěstí je ale v pravé části animovaný příklad, s jehož pomocí snadno nalezneme variantu automatických změn velikostí, jakou přesně potřebujeme.

Pozor – ačkoli by se na první pohled mohlo znát, že na iPadu a iPhone, kde nejsou okna s měnitelnou velikostí, není korektní nastavení těchto atributů důležité, opak je pravdou:

• předně, rozměry rámce se mění při rotaci přístroje. Velmi často stačí korektně nastavit "dráty" v tomto inspektoru, a není již zapotřebí dělat nic pro korektní podporu obou poloh;

• telefon navíc může limitovat viditelnou oblast pruhem representujícím aktuální hovor; pak se okno na výšku poněkud zmenší, a je zapotřebí, aby na to naše rámce reagovaly korektně (v simulátoru existuje přímo standardní služba, jež umožní tento pruh vyvolat a situaci otestovat).

Inspektor vazeb

V inspektoru vazeb – v iOSu posledním – vidíme všechny vazby mezi zvoleným objektem a kterýmkoli jiným, jež jsou representovány "outlety" a "akcemi" (ostatně jak víme z předminulého dílu, "akce" ve skutečnosti není nic jiného, než další "outlet", doprovázený uloženým selektorem).

Tímto inspektorem se budeme samozřejmě zabývat podrobně, protože je spolu s inspektorem atributů daleko nejpodstatnější při práci s XIBy; necháme si to ale na příště, kdy si budeme o vazbách a práci s nimi povídat podrobně.

Inspektor objektových vazeb

"Objektové vazby" – bindings – je poměrně velmi geniální mechanismus, umožňující sestavovat řídicí vrstvu v modelu MVC stejně snadno, jako vrstvu grafických objektů. Bohužel, v iOSu není k dispozici; proto jen odkážeme na články v našem seriálu, kde jsme se těmto službám věnovali podrobně.

Inspektor se naštěstí oproti původnímu z Interface Builderu téměř nezměnil – jeho vzhled je mírně odlišný a absurdní umístění v pravém sloupci samozřejmě zůstává, ale obsah a funkce jsou stále stejné:

Inspektor animačních efektů

Poslední z inspektorů, určený pro nastavení animačních a vzhledových efektů:

také odbudeme jen několika řádky: předně proto, že v iOSu bůhvíproč není k dispozici vůbec (ačkoli většina odpovídajících služeb na knihovnách je a jejich programové nastavení je možné), a kromě toho také proto, že jsme se o velmi zajímavých službách knihovny Core Animation dosud nebavili vůbec, takže zatím nemáme odpovídající základy. Vrátíme se k němu samozřejmě někdy později, až se budeme touto knihovnou a jejími možnostmi zabývat podrobněji.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Informace  

 » Rubriky  » Agregator  

 » Rubriky  » Tipy a Triky  

 » Rubriky  » Začínáme s  

 » Rubriky  » Software  

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: