iOS 7’ye Giriş

Bu makale, iOS 7'de kullanıma sunulan View Controller geçişleri, UIView animasyonlarında yapılan iyileştirmeler, UIKit Dynamics ve Metin Seti gibi önemli yeni API'leri kapsar. Ayrıca kullanıcı arabiriminde yapılan bazı değişiklikler ve yeni çok görevlilik özellikleri de ele alınıyor.

iOS 7, iOS için önemli bir güncelleştirmedir. Uygulama chrome yerine içeriğe odaklanan tamamen yeni bir kullanıcı arabirimi tasarımı sunar. Görsel değişikliklerinin yanı sıra iOS 7, daha zengin etkileşimler ve deneyimler oluşturmak için çok sayıda yeni API ekler. Bu belgede iOS 7 ile sunulan yeni teknolojiler araştırılıyor ve daha fazla araştırma için bir başlangıç noktası görevi görür.

UIView Animasyon Geliştirmeleri

iOS 7, UIKit'teki animasyon desteğini artırarak uygulamaların daha önce doğrudan Çekirdek Animasyon çerçevesine düşürmesi gereken işlemleri gerçekleştirmesine olanak tanır. Örneğin, UIView artık daha önce CAKeyframeAnimation bir CALayeröğesine uygulanmış olan yay animasyonlarının yanı sıra ana kare animasyonları da gerçekleştirebilir.

Bahar Animasyonları

UIView artık yay efektiyle özellik değişikliklerinin animasyonlarını destekliyor. Bunu eklemek için, aşağıda açıklandığı gibi yay sönümleme oranı ve ilk yay hızı değerlerini geçirerek veya AnimateNotifyAsync yöntemini çağırınAnimateNotify:

  • springWithDampingRatio – Daha küçük bir değer için salınımın arttığı 0 ile 1 arasında bir değer.
  • initialSpringVelocity – Saniye başına toplam animasyon uzaklığı yüzdesi olarak ilk yay hızı.

Aşağıdaki kod, görüntü görünümünün merkezi değiştiğinde yay efekti oluşturur:

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);
}

Bu yay efekti, aşağıda gösterildiği gibi görüntü görünümünün animasyonunu yeni bir orta konuma tamamlarken geri dönen görünmesine neden olur:

Bu yay efekti, animasyonu yeni bir merkez konumuna tamamlayan görüntü görünümünün geri dönen görünmesine neden olur

Ana Kare Animasyonları

UIView sınıfı artık üzerinde UIViewanahtar kare animasyonları oluşturma yöntemini içerirAnimateWithKeyframes. Bu yöntem diğer UIView animasyon yöntemlerine benzer, ancak anahtar kareleri dahil etmek için parametre olarak ek NSAction bir ileti gönderilir. NSActioniçinde, anahtar kareler çağrılarak UIView.AddKeyframeWithRelativeStartTimeeklenir.

Örneğin, aşağıdaki kod parçacığı, görünümün merkezine animasyon eklemek ve görünümü döndürmek için bir ana kare animasyonu oluşturur:

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 ();
    });
}

Yöntemin AddKeyframeWithRelativeStartTime ilk iki parametresi, genel animasyon uzunluğunun yüzdesi olarak sırasıyla ana karenin başlangıç saatini ve süresini belirtir. Yukarıdaki örnek, görüntü görünümünün ilk saniye boyunca yeni merkezine animasyon eklemesini ve ardından sonraki saniyenin 90 derecesini döndürmesini gösterir. Animasyon bir seçenek olarak belirttiğinden UIViewKeyframeAnimationOptions.Autoreverse , her iki ana kare de ters animasyon ekler. Son olarak, son değerler tamamlama işleyicisindeki ilk duruma ayarlanır.

Aşağıdaki ekran görüntüleri, birleştirilmiş animasyonu ana kareler aracılığıyla gösterir:

Bu ekran görüntüleri, birleştirilmiş animasyonu ana kareler aracılığıyla gösterir

UIKit Dynamics

UIKit Dynamics, UIKit'te uygulamaların fiziğe dayalı animasyonlu etkileşimler oluşturmasına olanak sağlayan yeni bir API kümesidir. UIKit Dynamics bunu mümkün kılmak için bir 2B fizik altyapısı kapsüller.

API doğası gereği bildirim temellidir. Yerçekimi, çarpışmalar, yaylar gibi fizik kavramlarını ifade etmek için davranış olarak adlandırılan nesneler oluşturarak fizik etkileşimlerinin nasıl davrandığını bildirirsiniz. Ardından davranışları, bir görünümü kapsülleyen dinamik animatör adı verilen başka bir nesneye eklersiniz. Dinamik animatör, bildirilen fizik davranışlarının dinamik öğelere uygulanmasıyla ilgilenir. ÖrneğinUIView, uygulayan IUIDynamicItemöğeler.

Karmaşık etkileşimleri tetikleyebilmek için aşağıdakiler dahil olmak üzere birkaç farklı ilkel davranış vardır:

  • UIAttachmentBehavior – Birlikte hareket eden iki dinamik öğe ekler veya bir ek noktasına dinamik öğe ekler.
  • UICollisionBehavior – Dinamik öğelerin çarpışmalara katılmasına izin verir.
  • UIDynamicItemBehavior – Dinamik öğelere uygulanacak esneklik, yoğunluk ve sürtünme gibi genel bir özellik kümesini belirtir.
  • UIGravityBehavior - Dinamik bir öğeye yer çekimi uygulayarak öğelerin çekim yönünde hızlanmasına neden olur.
  • UIPushBehavior – Dinamik bir öğeye zorla uygular.
  • UISnapBehavior – Dinamik bir öğenin yay efekti olan bir konuma tutturmasına izin verir.

Birçok temel öğe olsa da UIKit Dynamics kullanarak bir görünüme fizik tabanlı etkileşimler eklemeye yönelik genel süreç davranışlar arasında tutarlıdır:

  1. Dinamik bir animasyon aracı oluşturun.
  2. Davranışlar oluşturun.
  3. Dinamik animatöre davranışlar ekleyin.

Dynamics Örneği

bir örneğine yerçekimi ve çarpışma sınırı ekleyen bir UIViewörneği inceleyelim.

UIGravityBehavior

Görüntü görünümüne yer çekimi eklemek, yukarıda açıklanan 3 adımı izler.

Bu örnek için yönteminde ViewDidLoad çalışacağız. İlk olarak, aşağıdaki gibi bir UIImageView örnek ekleyin:

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);

Bu, ekranın üst kenarında ortalanmış bir görüntü görünümü oluşturur. Görüntüyü yerçekimiyle "düşmek" için bir örneğini UIDynamicAnimatoroluşturun:

dynAnimator = new UIDynamicAnimator (this.View);

, UIDynamicAnimator ekli davranışlar başına animasyonlu olacak öğeleri içeren bir UICollectionViewLayoutbaşvuru UIView veya örneğini alır.

Ardından bir UIGravityBehavior örnek oluşturun. gibi öğesini uygulayan IUIDynamicItembir UIViewveya daha fazla nesne geçirebilirsiniz:

var gravity = new UIGravityBehavior (dynItems);

Davranış, bu örnekte animasyonunu yaptığımız tek UIImageView örneği içeren bir dizisi IUIDynamicItemgeçirilir.

Son olarak, davranışı dinamik animatöre ekleyin:

dynAnimator.AddBehavior (gravity);

Bu, aşağıda gösterildiği gibi görüntünün yerçekimiyle aşağı doğru hareket etmesine neden olur:

Başlangıç resmi konumuBitiş resmi konumu

Ekranın sınırlarını kısıtlayan bir şey olmadığından, görüntü görünümü yalnızca alttan düşer. Görüntünün ekranın kenarlarıyla çarpışması için görünümü kısıtlamak için bir UICollisionBehaviorekleyebiliriz. Bunu sonraki bölümde ele alacağız.

UICollisionBehavior

bir oluşturup UICollisionBehavior dinamik animatöre ekleyerek başlayacağız. Aynı için UIGravityBehavioryaptığımız gibi.

Kodu öğesini içerecek UICollisionBehaviorşekilde değiştirin:

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);
}

adlı UICollisionBehaviorTranslatesReferenceBoundsIntoBoundrybir özelliğe sahiptir. Bunu olarak ayarlamak true , başvuru görünümünün sınırlarının çakışma sınırı olarak kullanılmasına neden olur.

Şimdi, görüntü yer çekimiyle aşağı doğru hareket ettiğinde, orada dinlenmeden önce ekranın alt kısmından hafifçe sekiyor.

UIDynamicItemBehavior

Düşen görüntü görünümünün davranışını ek davranışlarla daha fazla denetleyebiliriz. Örneğin, esnekliği artırmak için bir UIDynamicItemBehavior ekleyebiliriz ve bu da ekranın alt kısmıyla çakıştığında görüntü görünümünün daha fazla sıçramasına neden olabilir.

ekleme UIDynamicItemBehavior , diğer davranışlarla aynı adımları izler. İlk olarak davranışı oluşturun:

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

Ardından, davranışı dinamik animatöre ekleyin:

dynAnimator.AddBehavior (dynBehavior);

Bu davranış gerçekleştiğinde, görüntü görünümü sınırla çakıldığında daha fazla geri sıçrar.

Genel Kullanıcı Arabirimi Değişiklikleri

Yukarıda açıklanan UIKit Dynamics, Denetleyici geçişleri ve gelişmiş UIView animasyonları gibi yeni UIKit API'lerine ek olarak, iOS 7 kullanıcı arabiriminde çeşitli görsel değişiklikler ve çeşitli görünümler ve denetimler için ilgili API değişiklikleri sunar. Daha fazla bilgi için bkz. iOS 7 Kullanıcı Arabirimine Genel Bakış.

Metin Seti

Metin Seti, güçlü metin düzeni ve işleme özellikleri sunan yeni bir API'dir. Alt düzey Temel Metin çerçevesinin üzerine kurulmuştur, ancak kullanımı Çekirdek Metin'den çok daha kolaydır.

Daha fazla bilgi için bkz. TextKit

Çoklu görev

iOS 7, arka plan çalışmasının ne zaman ve nasıl gerçekleştirildiğini değiştirir. iOS 7'de görev tamamlama artık görevler arka planda çalışırken uygulamaları uyanık tutmaz ve uygulamalar arka planda bitişik olmayan bir şekilde işlenmek üzere uyandırılır. iOS 7 ayrıca arka planda yeni içerikle uygulamaları güncelleştirmek için üç yeni API ekler:

  • Arka Plan Getirme – Uygulamaların düzenli aralıklarla arka planda içerik güncelleştirmesine izin verir.
  • Uzak Bildirimler - Uygulamaların anında iletme bildirimi alırken içeriği güncelleştirmesine izin verir. Bildirimler sessiz olabilir veya kilit ekranında bir başlık görüntüleyebilir.
  • Arka Plan Aktarım Hizmeti – Sabit bir süre sınırı olmadan büyük dosyalar gibi verilerin karşıya yüklenmesine ve indirilmesine izin verir.

Yeni çoklu görev özellikleri hakkında daha fazla ayrıntı için Xamarin Arka Plan Oluşturma kılavuzunun iOS bölümlerine bakın.

Özet

Bu makale, iOS'a yapılan bazı önemli yeni eklemeleri kapsar. İlk olarak, Görünüm Denetleyicilerine özel geçişlerin nasıl ekleneceğini gösterir. Ardından, hem bir gezinti denetleyicisi içinden hem de koleksiyon görünümleri arasında etkileşimli olarak koleksiyon görünümlerinde geçişlerin nasıl kullanılacağını gösterir. Daha sonra UIView animasyonlarında yapılan ve uygulamaların önceden doğrudan Çekirdek Animasyon'da programlama gerektiren şeyler için UIKit'i nasıl kullandığını gösteren çeşitli geliştirmeler sunar. Son olarak, UIKit'e bir fizik altyapısı getiren yeni UIKit Dynamics API'sinin yanı sıra Text Kit çerçevesindeki zengin metin desteği de kullanıma sunuldu.