WWDC21: AsyncImage

SwiftUI ile geliştirdiğiniz uygulamanıza kolayca internetten görseller ekleyin!

Baran Önen
TurkishKit
3 min readJun 11, 2021

--

Bir WWDC haftasından hepinize selamlar!👋 Bu yazımızda WWDC21'de SwiftUI için tanıtılan en önemli özelliklerden biri olan AsyncImage’dan bahsedeceğim. 👨‍💻 Öyleyse haydi başlayalım.🚀

AsyncImage, internetteki görüntüleri URL’ler aracılığıyla asenkron bir şekilde yükleyerek SwiftUI’da göstermenin yeni ve oldukça kolay bir yoludur. Bu özellik tanıtılmadan önce görüntüleri internetten alabilmek için URLSession kullanmamız gerekiyordu. Bu da kodun karmaşıklığını arttırıyordu.

Bu yeni özelliği denemek için öncelikle Xcode 13'ün beta sürümünü Mac’inize kurmuş olmanız gerekiyor. Eğer Xcode 13'e hâlâ sahip değilseniz, indirmek için bu linki kullanabilirsiniz.

Xcode hazır olduğuna göre uygulamamızı geliştirmeye başlayabiliriz. Bunun için öncelikle yeni bir proje oluşturalım.

Şimdi “ContentView”un içine aşağıdaki kodu ekleyelim:

Bu kod, AsyncImage’ı olabildiğince basit şekilde kullanmamızı sağlayacak. Kullandığımız URL, Unsplash’den rastgele bir fotoğraf almamızı sağlıyor. Şu ana kadar yazdığımız kod ile görüntünün boyutunu değiştiremiyor veya görsel indirilirken gösterilecek arayüzü ayarlayamıyoruz.

Şimdi, AsyncImage elemanına bir frame “modifier”ı ekleyelim:

Şimdi ise görüntü indirilene kadar gözüken “placeholder”ın boyutunu değiştirdik. Ancak görüntü indirildikten sonra bu boyutun bir önemi veya işlevi kalmıyor. Görüntü, otomatik olarak kendi boyutunda gösteriliyor.

Bu sorunu çözebilmek için init(url:scale:content:placeholder:)initializer”ını kullanmamız gerekiyor.

Uygulamamızdaki kodu aşağıdaki ile değiştirelim:

Bu şekilde yazdığımız kod, görüntüye resizable “modifier”ını eklememizi ve bu sayede görüntüyü ölçeklendirebilmemizi sağlıyor. Ayrıca, görüntü indirilirken kullanıcıyı karşılayacak arayüzü de placeholder’ın içinde belirtebiliyoruz. Bunun için ProgressView kullanmak güzel bir seçenek.

AsyncImage ile yapabileceklerimiz bunlar ile sınırlı değil. Ayrıca, görüntünün anlık durumunu da elde edebiliyoruz. Uygulamanın kodunu aşağıdaki ile değiştirelim:

Bu şekilde de görüntüyü istediğimiz şekilde gösterebiliyoruz. Ancak bunun dışında görüntünün indirilmesinde bir sorun oluşursa bu durumda da kullanıcıya bir dönüş sağlayabiliyoruz.

Gördüğünüz gibi AsyncImage ile SwiftUI’da internetten aldığımız resimleri kullanmak oldukça kolay. Yalnız burada unutmamanız gereken şey şu, bu özellik kullanıcı tarafında minimum iOS 15, macOS 12 Monterey, tvOS 15 veya watchOS 8 sürümünü gerektiriyor.

Bizi daha yakından takip etmek istiyorsanız, sosyal medya hesaplarımıza aşağıdan ulaşabilirsiniz!

Twitter | Instagram | Facebook

--

--