Neden SwiftUI?

Herkesin bahsettiği bu SwiftUI nedir? Avantajları ve dezavantajları nelerdir?

Hatice Nur Okur
Kodcular

--

Bildiğimiz üzere iOS uygulamalarını geliştirmek için Swift programlama dili ve Storyboard arayüzünü kullanıyorduk. Fakat kendi açımdan konuşmam gerekirse storyboard kullanmakta çok zorlanıyordum. Bu sebeple iOS uygulamaları geliştirmekten hep çekiniyordum. Son zamanlarda internette okuduğum ve takip ettiğim yazılarda SwiftUI terimini oldukça çok duymaya başladım ve bunlarla ilgili yapılan ufak kod parçalarını gördükçe ilgimi çekti. Neden ben de denemeyeyim dedim. 🙂

Storyboard ile geliştirme yaparken arayüzü ayrı bir dosyada sürükle bırak yardımı ile oluşturup bunu .swift uzantılı kod dosyaları ile bağlıyorduk. Sonrasında kullandığımız arayüz elemanlarını ya kod tarafından ya da storyboard tarafından özelleştiriyorduk. Storyboard tarafında isimlendirmede bile en ufak bir değişiklik yapsak ve bunu kodda bağladığımız yerde unutsak kodumuz çalışmıyordu. Sadece bu durum bile oldukça dikkat gerektiriyordu.

Fakat SwiftUI ile hem kodu hem de arayüzü aynı dosyadan yazabiliyoruz ve bu işimizi oldukça kolaylaştırıyor. Ya da benim daha çok kolayıma geliyor, bilemiyorum 🙂.

Şimdi basit bir örnek üzerinden devam etmek istiyorum.

Yukarıda görmüş olduğunuz proje sıfırdan XCode ile oluşturduğumuz, içersinde klasik “Hello World” yazısı ile gelen bir projedir. Normalde storyboard kullandığımızda böyle bir görüntü ile karşılaşmayız çünkü tüm arayüz tasarımları tek bir dosyada toplanır, kodun yanında o dosyaya ait olan tasarımı göremeyiz. Fakat SwiftUI kullanmanın en güzel avantajlarından birisi üzerinde çalıştığınız ekranı hemen kodunuzun yanında görmeniz. Arayüzü gördüğümüz kısma Canvas adı veriliyor. Eğer sağ tarafta cihazı göremiyorsanız Editor > Canvas kısmının işaretli olduğundan emin olun.

Kod tarafına baktığımızda Text(“Hello World!”) diye bir kod parçası görüyoruz. Bu kod sayesinde sağ taraftaki cihazda anında “Hello World!“ yazısını elde ediyoruz. Yani sol tarafta hangi arayüz elemanını yazarsak, sağ tarafta da anında karşılığını görebiliyoruz. Kod ve arayüz hep senkronize bir şekilde ilerliyor. Cihazın üzerinde Preview yazısının yanında yeşil bir yuvarlak mevcut. Bunun yeşil olması, sol taraftaki yazdığımız kodun anında arayüze yansıyacağını belirtir. Eğer yeşil değilse Option + Cmd+ P tuşları ile ya da cihazın üstünde çıkan Resume butonu ile tekrar senkronize edebilirsiniz.

Gelelim SwiftUI’ın avantajlarına ve dezavantajlarına. Bunları madde madde yazmak istiyorum.

Avantajları:

  • Kod ve arayüz bir araya geldiği için ekran tasarımlarında artık storyboard ile uğraşmıyoruz.
  • Kodda yaptığımız değişiklikleri gerçek zamanlı olarak Canvas’daki cihazda görebiliyoruz.
  • @IBAction ve @IBOutlet gibi terimlerden kurtulduk. Arayüzdeki elemanları kod ile ayrıca bağlamamıza gerek kalmadı.
  • Tek bir platform için yazdığımız kodlar artık Apple’ın diğer platformlarında da çalışır hale geldi. Bunun için aşağıdaki istediğiniz alanları işaretlemeniz yeterli.

“Write once and run everywhere” -WWDC Talk

Dezavantajları:

  • SwiftUI ile kod yazmak istiyorsanız cihazlarınız minimum iOS 13, macOS 10.15 (Catalina), tvOS 13 ve watchOS 6 olmalı. Daha altındaki versiyonlarda desteklenmiyor maalesef.
  • Bazı UIKit elemanları hala SwiftUI ile kullanılamıyor. Fakat proje içerisinde UIKit kullanmanız kısıtlanmıyor. Yani bu açığı böylece kapatabiliriz.
  • Desteklenen UIKit elemanlarının da bazı özellikleri desteklenmiyor olabiliyor. Bunun için de kendimiz çözümler üretmek durumunda kalıyoruz.

Herkeste olmayan fakat etrafımdaki birkaç kişiden de duyduğum bir sorun daha var. SwiftUI projesinde bazen build aldığımda bilgisayarımın ses çıkışını bozulup sesleri cızırtılı çıkartmaya başlıyor. Tekrar düzelmesi 5–10 dakikayı alıyor.

Bu yazımda kısaca SwiftUI konusuna giriş yapmaya çalıştım. Umarım sizi de heyecanlandıran bir alan olmuştur çünkü beni iOS uygulamaları geliştirme konusunda oldukça teşvik etti. Başka yazılarda görüşmek üzere…

Referanslar:

  1. Mastering SwiftUI by Appcoda
  2. SwiftUI by Tutorials 2nd Edition by Raywenderlich

--

--

Hatice Nur Okur
Kodcular

“Tell me and I’ll forget. Show me and I may remember. Involve me and I learn.” -Benjamin Franklin