Úvod do iOSu 7

Tento článek se zabývá hlavními novými rozhraními API zavedená v iOSu 7, včetně přechodů kontroleru zobrazení, vylepšení animací UIView, SADY UIKit Dynamics a Text Kit. Zabývá se také některými změnami uživatelského rozhraní a novými možnostmi multitaskingu.

iOS 7 je hlavní aktualizace pro iOS. Představuje zcela nový návrh uživatelského rozhraní, který se zaměřuje spíše na obsah než na chrome aplikací. Kromě vizuálních změn přidává iOS 7 k vytváření rozsáhlejších interakcí a prostředí řadu nových rozhraní API. Tento dokument se zabývá novými technologiemi zavedenými v iOSu 7 a slouží jako výchozí bod pro další zkoumání.

Vylepšení animací UIView

iOS 7 rozšiřuje podporu animací v UIKitu, což umožňuje aplikacím dělat věci, které dříve vyžadovaly, aby se přímo přehodily do architektury Core Animation. Nyní můžete například UIView provádět animace pružiny a animace klíčových snímků, které byly dříve CAKeyframeAnimation použity na CALayer.

Jarní animace

UIView nyní podporuje animování změn vlastností pomocí efektu spring. Pokud to chcete přidat, volejte metodu AnimateNotify nebo AnimateNotifyAsync metodu a předejte hodnoty pro poměr tlumení pružiny a počáteční rychlost pružiny, jak je popsáno níže:

  • springWithDampingRatio – Hodnota mezi 0 a 1, kde se oscilace zvyšuje pro menší hodnotu.
  • initialSpringVelocity – Počáteční rychlost pružiny jako procento celkové animační vzdálenosti za sekundu.

Následující kód vytvoří efekt pružiny, když se změní střed zobrazení obrázku:

void AnimateWithSpring ()
{
    float springDampingRatio = 0.25f;
    float initialSpringVelocity = 1.0f;

    UIView.AnimateNotify (3.0, 0.0, springDampingRatio, initialSpringVelocity, 0, () => {

        imageView.Center = new CGPoint (imageView.Center.X, 400);

    }, null);
}

Tento efekt na jaře způsobí, že se zobrazení obrázku při dokončení animace do nového centrálního umístění zobrazí, jak je znázorněno níže:

This spring effect causes the image view to appear to bounce as it completes its animation to a new center location

Animace klíčových snímků

Třída UIView nyní obsahuje metodu AnimateWithKeyframes pro vytváření animací klíčových snímků na objektu UIView. Tato metoda se podobá jiným UIView animačním metodám s tím rozdílem, že další NSAction metoda se předává jako parametr, který bude obsahovat klíčové rámce. V rámci NSActionklíčové rámce jsou přidány voláním UIView.AddKeyframeWithRelativeStartTime.

Například následující fragment kódu vytvoří animaci klíčového rámce pro animaci středu zobrazení a otočení zobrazení:

void AnimateViewWithKeyframes ()
{
    var initialTransform = imageView.Transform;
    var initialCeneter = imageView.Center;

    // can now use keyframes directly on UIView without needing to drop directly into Core Animation

    UIView.AnimateKeyframes (2.0, 0, UIViewKeyframeAnimationOptions.Autoreverse, () => {
        UIView.AddKeyframeWithRelativeStartTime (0.0, 0.5, () => {
            imageView.Center = new CGPoint (200, 200);
        });

        UIView.AddKeyframeWithRelativeStartTime (0.5, 0.5, () => {
            imageView.Transform = CGAffineTransform.MakeRotation ((float)Math.PI / 2);
        });
    }, (finished) => {
        imageView.Center = initialCeneter;
        imageView.Transform = initialTransform;

        AnimateWithSpring ();
    });
}

První dva parametry metody AddKeyframeWithRelativeStartTime určují počáteční čas a dobu trvání klíčového rámce v procentech celkové délky animace. Výše uvedený příklad vede k animaci zobrazení obrázku na jeho nové středy nad první sekundou, následované otočením o 90 stupňů za další sekundu. Vzhledem k tomu, že animace určuje UIViewKeyframeAnimationOptions.Autoreverse jako možnost, obě klíčové snímky se animují v obráceném směru. Nakonec se konečné hodnoty nastaví na počáteční stav v obslužné rutině dokončení.

Následující snímky obrazovky znázorňují kombinovanou animaci prostřednictvím klíčových snímků:

This screenshots illustrates the combined animation through the keyframes

UIKit Dynamics

UIKit Dynamics je nová sada rozhraní API v UIKitu, která umožňuje aplikacím vytvářet animované interakce na základě fyziky. UIKit Dynamics zapouzdřuje 2D fyzikální modul, aby to bylo možné.

Rozhraní API je deklarativní povahou. Deklarujete, jak se fyzikální interakce chovají vytvořením objektů ( označovaných jako chování) k vyjádření fyzikálních konceptů, jako jsou závažnost, kolize, pružiny atd. Pak toto chování připojíte k jinému objektu, kterému se říká dynamický animátor, který zapouzdřuje zobrazení. Dynamický animátor se postará o použití deklarovaného fyzikálního chování u dynamických položek – položek, které implementují IUIDynamicItem, například UIView.

K dispozici je několik různých primitivních chování pro aktivaci složitých interakcí, mezi které patří:

  • UIAttachmentBehavior – Připojí dvě dynamické položky, které se pohybují pohromadě, nebo připojí dynamickou položku k bodu přílohy.
  • UICollisionBehavior – Umožňuje dynamickým položkám účastnit se kolizí.
  • UIDynamicItemBehavior – Určuje obecnou sadu vlastností, které se mají použít u dynamických položek, jako je elasticita, hustota a tření.
  • UIGravityBehavior - Aplikuje závažnost na dynamickou položku, což způsobuje zrychlení položek v gravitačním směru.
  • UIPushBehavior – Použije vynucovat dynamickou položku.
  • UISnapBehavior – Umožňuje dynamické položce přichytit k poloze s efektem pružiny.

I když existuje mnoho primitiv, obecný proces přidávání fyzikálních interakcí do zobrazení pomocí UIKit Dynamics je konzistentní napříč chováními:

  1. Vytvořte dynamický animátor.
  2. Vytvoření chování
  3. Přidejte do dynamického animátoru chování.

Příklad Dynamics

Podívejme se na příklad, který přidává závažnost a hranici kolizí do UIView.

UIGravityBehavior

Přidání závažnosti do zobrazení obrázku se řídí 3 kroky popsanými výše.

V tomto příkladu ViewDidLoad budeme pracovat v metodě. Nejprve přidejte UIImageView instanci následujícím způsobem:

image = UIImage.FromFile ("monkeys.jpg");

imageView = new UIImageView (new CGRect (new CGPoint (View.Center.X - image.Size.Width / 2, 0), image.Size)) {
                    Image =  image
                }

View.AddSubview (imageView);

Tím se vytvoří zobrazení obrázku uprostřed na horním okraji obrazovky. Aby obrázek "spadl" s závažností, vytvořte instanci UIDynamicAnimator:

dynAnimator = new UIDynamicAnimator (this.View);

Přebírá UIDynamicAnimator instanci odkazu UIView nebo objektu UICollectionViewLayout, který obsahuje položky, které budou animované podle připojeného chování.

Dále vytvořte UIGravityBehavior instanci. Můžete předat jeden nebo více objektů implementovaných jako IUIDynamicItemUIView:

var gravity = new UIGravityBehavior (dynItems);

Toto chování se předává pole IUIDynamicItem, které v tomto případě obsahuje jedinou UIImageView instanci, kterou animujeme.

Nakonec přidejte chování do dynamického animátoru:

dynAnimator.AddBehavior (gravity);

Výsledkem je animace obrázku směrem dolů s závažností, jak je znázorněno níže:

The starting image locationThe ending image location

Vzhledem k tomu, že hranice obrazovky nijak neomezují, zobrazení obrázku jednoduše klesne dolů. Chcete-li omezit zobrazení tak, aby obrázek koliduje s okraji obrazovky, můžeme přidat .UICollisionBehavior Probereme to v další části.

UICollisionBehavior

Začneme tím, že vytvoříme UICollisionBehavior a přidáme ho do dynamického animátoru, stejně jako jsme to udělali pro .UIGravityBehavior

Upravte kód tak, aby zahrnoval:UICollisionBehavior

using (image = UIImage.FromFile ("monkeys.jpg")) {

    imageView = new UIImageView (new CGRect (new CGPoint (View.Center.X - image.Size.Width / 2, 0), image.Size)) {
        Image =  image
    };

    View.AddSubview (imageView);

    // 1. create the dynamic animator
    dynAnimator = new UIDynamicAnimator (this.View);

    // 2. create behavior(s)
    var gravity = new UIGravityBehavior (imageView);
    var collision = new UICollisionBehavior (imageView) {
        TranslatesReferenceBoundsIntoBoundary = true
    };

    // 3. add behaviors(s) to the dynamic animator
    dynAnimator.AddBehaviors (gravity, collision);
}

UICollisionBehavior vlastnost s názvem TranslatesReferenceBoundsIntoBoundry. Nastavením této možnosti způsobíte true , že hranice referenčního zobrazení se použijí jako hranice kolizí.

Když teď obrázek animuje dolů s závažností, odrazí se mírně ze spodní části obrazovky, než se tam usadí.

UIDynamicItemBehavior

Chování padajícího zobrazení obrázku můžeme dále řídit dalšími chováními. Můžeme například přidat zvýšení UIDynamicItemBehavior elasticity, což způsobí, že zobrazení obrázku se při kolidování s dolní částí obrazovky více odrazí.

Když přidáte UIDynamicItemBehavior stejný postup jako u ostatních chování, postupujte následovně. Nejprve vytvořte chování:

var dynBehavior = new UIDynamicItemBehavior (dynItems) {
    Elasticity = 0.7f
};

Pak přidejte chování do dynamického animátoru:

dynAnimator.AddBehavior (dynBehavior);

Při tomto chování se zobrazení obrázku při kolidování s hranicí odrazí více.

Obecné změny uživatelského rozhraní

Kromě nových rozhraní API UIKit, jako jsou UIKit Dynamics, přechody kontroleru a vylepšené animace UIView popsané výše, iOS 7 přináší různé vizuální změny uživatelského rozhraní a související změny rozhraní API pro různá zobrazení a ovládací prvky. Další informace naleznete v přehledu uživatelského rozhraní iOS 7.

TextOvá sada

Sada Text Kit je nové rozhraní API, které nabízí výkonné funkce rozložení textu a vykreslování. Je postavena na rozhraní Core Text na nízké úrovni, ale je mnohem jednodušší než základní text.

Další informace najdete v naší aplikaci TextKit.

Multitasking

iOS 7 se změní, kdy a jak se provádí práce na pozadí. Dokončování úkolů v iOSu 7 už neudržuje aplikace vzhůru, když jsou úkoly spuštěné na pozadí a aplikace se pro zpracování na pozadí prodlouží bez souvislého způsobu. iOS 7 také přidává tři nová rozhraní API pro aktualizaci aplikací s novým obsahem na pozadí:

  • Načítání na pozadí – Umožňuje aplikacím aktualizovat obsah na pozadí v pravidelných intervalech.
  • Vzdálená oznámení – Umožňuje aplikacím aktualizovat obsah při přijímání nabízených oznámení. Oznámení můžou být buď tichá, nebo můžou zobrazovat nápis na zamykací obrazovce.
  • Služba přenosu na pozadí – Umožňuje nahrávání a stahování dat, jako jsou velké soubory, bez pevného časového limitu.

Další podrobnosti o nových funkcích multitaskingu najdete v částech průvodce Xamarin Backgroundingem pro iOS.

Shrnutí

Tento článek se zabývá několika hlavními novými dodatky k iOSu. Nejprve ukazuje, jak přidat vlastní přechody na kontrolery zobrazení. Pak ukazuje, jak používat přechody v zobrazeních kolekce, a to jak z navigačního kontroleru, tak interaktivně mezi zobrazeními kolekce. Dále zavádí několik vylepšení animací UIView a ukazuje, jak aplikace používají UIKit pro věci, které dříve vyžadovaly programování přímo proti základním animacím. A konečně, nové rozhraní API UIKit Dynamics, které přináší fyzikální modul do UIKitu, je představen spolu s podporou rtfů, která je nyní k dispozici v rozhraní Text Kit.