Ú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:
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 NSAction
klíč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ů:
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:
- Vytvořte dynamický animátor.
- Vytvoření chování
- 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 IUIDynamicItem
UIView
:
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:
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);
}
Má 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.