Úvod do iOSu 6

iOS 6 obsahuje řadu nových technologií pro vývoj aplikací, které Xamarin.iOS 6 přináší vývojářům v jazyce C#.

The iOS 6 logo

Díky systémům iOS 6 a Xamarin.iOS 6 teď mají vývojáři k dispozici řadu možností vytvářet aplikace pro iOS, včetně těch, které cílí na i Telefon 5. Tento dokument obsahuje některé z zajímavějších nových funkcí, které jsou k dispozici, a odkazy na články pro každé téma. Kromě toho se dotkne několika změn, které budou důležité, když vývojáři přejdou na iOS 6 a nové rozlišení i Telefon 5.

Úvod do zobrazení kolekcí

Zobrazení kolekcí umožňují zobrazení obsahu pomocí libovolných rozložení. Umožňují snadno vytvářet rozložení podobná mřížce a zároveň podporovat vlastní rozložení. Další informace naleznete v příručce Úvod do zobrazení kolekce.

Úvod do PassKitu

Architektura PassKit umožňuje aplikacím pracovat s digitálními průchody spravovanými v aplikaci Passbook. Další informace najdete v příručce Úvod do sady Pass Kit.

Úvod do EventKitu

Architektura EventKit poskytuje způsob, jak získat přístup k datům kalendáře, událostí kalendáře a připomenutí uložených v databázi kalendáře. Přístup k kalendářům a událostem kalendáře byl k dispozici od iOS 4, ale iOS 6 teď zpřístupňuje přístup k datům připomenutí. Další informace najdete v příručce Introduction do EventKitu .

Úvod do sociálního rámce

Rozhraní Social Framework poskytuje jednotné rozhraní API pro interakci se sociálními sítěmi, včetně Twitteru a Facebooku, stejně jako SinaWeibo pro uživatele v Číně. Další informace naleznete v příručce Úvod do sociálního rozhraní .

Změny ve StoreKitu

Apple představil dvě nové funkce sady Store Kit: nákup a stažení obsahu z iTunes nebo App Storu z vaší aplikace a hostování souborů obsahu pro nákupy v aplikaci!. Další informace najdete v průvodci sadou Changes to Store Kit .

Další změny

ZobrazeníWillUnload a ViewDidUnload zastaralé

V ViewWillUnload iOSu UIViewController 6 už nejsou volána metody a ViewDidUnload metody. V předchozích verzích iOS mohly tyto metody používat aplikace k uložení stavu před uvolněním zobrazení a vyčištění kódu.

Například Visual Studio pro Mac vytvoří metodu nazvanou ReleaseDesignerOutletsníže, která by pak byla volána z ViewDidUnload:

void ReleaseDesignerOutlets ()
{
    if (myOutlet != null) {
        myOutlet.Dispose ();
        myOutlet = null;
    }
}

V iOSu 6 však již není nutné volat ReleaseDesignerOutlets.

Pro vyčištění kódu by měly aplikace pro iOS 6 používat DidReceiveMemoryWarning. Kód, který volá Dispose , by se však měl používat střídmě a pouze pro objekty náročné na paměť, jak je znázorněno níže:

if (myImageView != null){
    if (myImageView.Superview == null){
        myImageView.Dispose();
        myImageView = null;
    }
}

Opětovné volání Dispose , jak je uvedeno výše, by mělo být potřeba jen zřídka. Obecně platí, že většina aplikací by měla provádět odebrání obslužných rutin událostí.

V případě uložení stavu můžou aplikace tuto akci provést a ViewWillDisappearViewDidDisappear nikoli ViewWillUnload.

i Telefon 5 Rozlišení

i Telefon 5 zařízení mají rozlišení 640x1136. Aplikace, které cílí na předchozí verze iOS, se při spuštění na i Telefon 5 zobrazí s poštovní schránkou, jak je znázorněno níže:

Applications that targeted previous versions of iOS will appear letterboxed when run on an iPhone 5

Aby se aplikace zobrazila na celé obrazovce na i Telefon 5, jednoduše přidejte obrázek s Default-568h@2x.png názvem s rozlišením 640x1136. Následující snímek obrazovky ukazuje, že aplikace spuštěná po zahrnutí tohoto obrázku:

This screenshot shows the application running after this image has been included

Podtřídy UINavigationBar

V iOSu 6 UINavigationBar je možné podtřídět. To umožňuje další kontrolu nad vzhledem a chováním UINavigationBar. Aplikace mohou například podtřídu přidat dílčí zobrazení, animovat tato zobrazení a upravit hranice objektu UINavigationBar.

Následující kód ukazuje příklad podtřídy UINavigationBar , která přidá UIImageView:

public class CustomNavBar : UINavigationBar
{
​    UIImageView iv;
    public CustomNavBar (IntPtr h) : base(h)
​    {
​​        iv = new UIImageView (UIImage.FromFile ("monkey.png"));
​​        iv.Frame = new CGRect (75, 0, 30, 39);
​    }
    public override void Draw (RectangleF rect)
​    {
​​        base.Draw (rect);
        TintColor = UIColor.Purple;
​​        AddSubview (iv);
​    }
}

Chcete-li přidat podtřídu UINavigationBar do UINavigationController, použijte UINavigationController konstruktor, který přebírá typ a UINavigationBarUIToolbar, jak je znázorněno níže:

navController = new UINavigationController (typeof(CustomNavBar), typeof(UIToolbar));

Použitím této UINavigationBar podtřídy se zobrazí zobrazení obrázků, jak je znázorněno na následujícím snímku obrazovky:

Using this UINavigationBar subclass results in the image view being displayed as shown in this screenshot

Orientace rozhraní

Před aplikacemi pro iOS 6 se může přepsat ShouldAutorotateToInterfaceOrientationhodnota true pro všechny orientace, které konkrétní kontroler podporuje. Například následující kód by se použil k podpoře pouze na výšku:

public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation toInterfaceOrientation)
    {
        return (toInterfaceOrientation == UIInterfaceOrientation.Portrait);
    }

V iOSu 6 ShouldAutorotateToInterfaceOrientation je zastaralý. Místo toho můžou aplikace přepsat GetSupportedInterfaceOrientations na řadiči kořenového zobrazení, jak je znázorněno níže:

public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations ()
    {
        return UIInterfaceOrientationMask.Portrait;
    }

Na iPadu se ve výchozím nastavení nastaví všechny čtyři orientace, pokud GetSupportedInterfaceOrientation nejsou implementovány. Na i Telefon a iPod Touch, výchozí je všechny orientace s výjimkou PortraitUpsideDown.