Úvod do iOSu 7
Tento článek se zabývá hlavními novými rozhraními API představenými v iOS 7, včetně přechodů kontrol řadičů zobrazení, vylepšení UIView animací, UIKit Dynamics a textových sad. Také se zabývá některými změnami v uživatelském rozhraní a novými enchanced funkcemi pro více úloh.
iOS 7 je hlavní aktualizace pro iOS. Zavádí zcela nový návrh uživatelského rozhraní, který místo aplikace Chrome přinese fokus na obsah. Vedle vizuálních změn přidá iOS 7 spoustu nových rozhraní API, aby bylo možné vytvářet bohatší interakce a prostředí. Tento dokument uvádí nové technologie zavedené s iOS 7 a slouží jako výchozí bod pro další průzkum.
Vylepšení animace UIView
iOS 7 rozšiřuje podporu animace v UIKit a umožňuje aplikacím provádět akce, které dříve vyžadovaly přímé vyřazení do základní animační architektury. UIViewNyní může například provádět jarní animace a také animace klíčových snímků, které dříve byly CAKeyframeAnimation aplikovány na CALayer .
Jarní animace
UIView nyní podporuje animaci změny vlastností se jarním efektem. Chcete-li toto přidat, zavolejte AnimateNotify buď AnimateNotifyAsync metodu nebo, a předejte hodnoty pro poměr pro tlumení pružiny a počáteční rychlost pružiny, jak je popsáno níže:
springWithDampingRatio– Hodnota mezi 0 a 1, kde se kmitání zvyšuje menší hodnota.initialSpringVelocity– Počáteční rychlost pružiny jako procento celkové vzdálenosti animace za sekundu.
Následující kód vytvoří pružinový efekt při změně středu 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 pružinový efekt způsobí, že zobrazení obrázku se odrazí při dokončení animace na nové středové umístění, jak je znázorněno níže:

Animace klíčových snímků
UIViewTřída teď obsahuje AnimateWithKeyframes metodu pro vytváření animací klíčových snímků na UIView . Tato metoda je podobná jiným UIView metodám animace s tím rozdílem, že další NSAction je předán jako parametr pro zahrnutí klíčových snímků. V rámci NSAction jsou klíčové snímky přidány voláním UIView.AddKeyframeWithRelativeStartTime .
Například následující fragment kódu vytvoří animaci klíčových snímků pro animaci středu zobrazení a také pro 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 AddKeyframeWithRelativeStartTime metody určují počáteční čas a dobu trvání klíčového snímku v procentech celkové délky animace. Výše uvedený příklad vede k zobrazení obrázku animace v novém středu za první sekundu a za další sekundu po rotaci 90 stupňů. Vzhledem k tomu, že animace Určuje UIViewKeyframeAnimationOptions.Autoreverse jako možnost, oba klíčové snímky animovat i opačné. Nakonec jsou konečné hodnoty nastaveny na počáteční stav v obslužné rutině dokončení.
Níže uvedené 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 UIKit, která umožňuje aplikacím vytvářet animované interakce na základě fyziky. UIKit Dynamics zapouzdřuje modul 2D fyziky, aby to bylo možné.
Rozhraní API je v podstatě deklarativní. Deklarujete, jak se interakce fyziky chovají, vytvořením objektů nazývaných chování – pro vyjádření základních konceptů, jako je závažnost, kolize, pružiny atd. Pak můžete tato chování připojit k jinému objektu s názvem dynamický Animator, který zapouzdřuje zobrazení. Dynamický Animator přebírá stojí použití deklarovaného vlastností fyzika na dynamické položky , které implementují , například UIView .
K dispozici je několik různých primitivních chování pro spuštění složitých interakcí, včetně:
UIAttachmentBehavior– Připojí dvě dynamické položky tak, aby se přesunuly dohromady, nebo připojí dynamickou položku k bodu přílohy.UICollisionBehavior– Umožňuje, aby se dynamické položky účastnily kolizí.UIDynamicItemBehavior– Určuje obecnou sadu vlastností, které se mají použít pro dynamické položky, jako je například pružnost, hustota a tření.UIGravityBehavior– Aplikuje závažnost na dynamickou položku, což způsobí, že se položky zrychlí ve směru Gravitational.UIPushBehavior– Aplikuje sílu na dynamickou položku.UISnapBehavior– Umožňuje, aby se dynamická položka přichycena k poloze s pružinovým efektem.
I když existuje mnoho primitivních primitiv, obecný proces pro přidání interakce na základě fyziky do zobrazení pomocí UIKit Dynamics je konzistentní v rámci chování:
- Vytvořte dynamický Animator.
- Vytvořit chování (y).
- Přidejte chování do dynamického Animator.
Příklad dynamiky
Pojďme se podívat na příklad, který přidá závažnost a hranici kolizí do UIView .
UIGravityBehavior
Přidání gravitace do zobrazení obrázku se řídí 3 kroky uvedenými nahoře.
V tomto příkladu budeme pracovat v ViewDidLoad 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ázek uprostřed horního okraje obrazovky. Chcete-li, aby image "mohla" klesnout, vytvořte instanci a UIDynamicAnimator :
dynAnimator = new UIDynamicAnimator (this.View);
UIDynamicAnimatorPřevezme instanci odkazu UIView nebo UICollectionViewLayout , která obsahuje položky, které budou animovány na základě připojených chování.
Dále vytvořte UIGravityBehavior instanci. Jeden nebo více objektů, které implementují, můžete předat IUIDynamicItem jako UIView :
var gravity = new UIGravityBehavior (dynItems);
Chování je předáno pole IUIDynamicItem , které v tomto případě obsahuje jednu instanci, kterou UIImageView jsme animováni.
Nakonec přidejte chování do dynamického Animator:
dynAnimator.AddBehavior (gravity);
Výsledkem je, že se obrázek animuje dolů s závažností, jak je znázorněno níže:
umístění
Vzhledem k tomu, že se neomezuje hranice obrazovky, zobrazení obrázku jednoduše odchází z dolního okraje. Abychom omezili zobrazení tak, aby se obraz střetem s okraji obrazovky, můžeme přidat UICollisionBehavior . Pokryjeme ho v další části.
UICollisionBehavior
Začneme vytvořením UICollisionBehavior a přidáním do dynamického Animator, stejně jako u UIGravityBehavior .
Upravte kód tak, aby obsahoval 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);
}
UICollisionBehaviorMá vlastnost s názvem TranslatesReferenceBoundsIntoBoundry . Toto nastavení true způsobí, že se hranice zobrazení odkazu použijí jako hranice kolizí.
Teď, když se obrázek animuje směrem dolů, předá se v dolní části obrazovky, než se pustí do klidu.
UIDynamicItemBehavior
Chování přepadajícího zobrazení obrázku můžeme dále řídit pomocí dalšího chování. Například můžeme přidat a UIDynamicItemBehavior zvýšit tak pružnost, což způsobí, že zobrazení obrázku bude při konfliktu s dolním okrajem obrazovky přerovno víc.
Přidání se UIDynamicItemBehavior řídí stejnými kroky jako u ostatních chování. Nejdřív vytvořte chování:
var dynBehavior = new UIDynamicItemBehavior (dynItems) {
Elasticity = 0.7f
};
Pak přidejte chování do dynamického Animator:
dynAnimator.AddBehavior (dynBehavior);
V takovém případě se zobrazení obrázku při kolizi s hranicí neodrazí.
Obecné změny uživatelského rozhraní
Kromě nových rozhraní API UIKit, jako jsou například UIKit Dynamics, přechody kontrol a vylepšené animace UIView popsané výše, systém iOS 7 zavádí celou řadu vizuálních změn v uživatelském rozhraní a související změny rozhraní API pro různá zobrazení a ovládací prvky. Další informace najdete v tématu Přehled uživatelského rozhraní systému iOS 7.
Textová sada
Text Kit je nové rozhraní API, které nabízí výkonné funkce pro rozložení textu a vykreslování. Je postaven na vrcholu základního textového rozhraní s nízkou úrovní, ale je mnohem jednodušší použít než základní text.
Další informace najdete v našich TextKit .
Multitasking
systém iOS 7 mění čas a způsob provádění práce na pozadí. Dokončení úkolu v systému iOS 7 již neudržuje spuštěné aplikace, když úlohy běží na pozadí a aplikace jsou probuzený pro zpracování na pozadí nesouvislým způsobem. 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ého oznámení. Oznámení můžou být tichá nebo můžou zobrazit banner na zamykací obrazovce.
- Služba přenosu na pozadí – umožňuje nahrávání a stahování dat, jako jsou například velké soubory, bez pevného časového omezení.
Další informace o nových funkcích pro více úlohách najdete v částech iOS Průvodce nasazením na pozadíXamarin.
Souhrn
Tento článek popisuje několik hlavních nových dodatků k iOS. Nejprve ukazuje, jak přidat vlastní přechody do řadičů zobrazení. Pak ukazuje, jak používat přechody v zobrazeních kolekcí, jak z portálu pro navigaci, tak i interaktivně mezi zobrazeními kolekcí. V dalším kroku zavádí několik vylepšení UIView animací, což ukazuje, jak aplikace používají UIKit pro věci, které dříve vyžadovaly programování přímo proti základní animaci. Nakonec nové rozhraní UIKit Dynamics API, které přináší modul fyziky UIKit, se zavede společně s podporou bohatých textů, která je teď dostupná v architektuře text Kit.