fc701e8eaf721385013db9f1592ab847e58fded1
14 Ekim 2023

SwiftUI’de Donanım ve İşletim Sistemi Bağımlılıkları

ile umut

SwiftUI, bilindiği üzere Apple tarafından iOS, macOS, watchOS ve tvOS platformlarında kullanılmak üzere geliştirilmiş yenı bir UI framework’dür. Declarative syntax’i sayesinde kod tekrarını aza indirerek hızlı prototiplemeye ve ortaya ürün çıkarılmasına olanak sağlar.

Ancak SwiftUI hala çok yeni sayılabileceği için, farklı iOS ve macOS sürümleri arasında uyumluluk sorunları yaşanabilmektedir. Örneğin, macOS’ta bazı özellikler iOS’a göre daha sınırlı olabilir. Aynı şekilde, eski iOS sürümlerinde de SwiftUI’nin tüm özellikleri desteklenmeyebilir. Öyle ki şu an yazmış olduğumuz bir uygulamada Picker Wheel özelleştirmesiyle alakalı bir sorunla karşılaştık. Arkaplan ve seçili kısımda duran background değişikliğini inspector adlı bir kütüphaneyle değişiklik sağlarken. 4 adet farklı versiyonda olan 2. nesil iPhone SE cihazlarında hata ile karşılaştık. iOS 16, 16.4 ve 17 sürümlerinde bir problem yaşamıyorken, iOS 16.6 versiyonunda crash yani çökme yaşadık ve sorun bir türlü çözülemedi. Bu sorunları genel olarak Android özelinde yaşarken artık iOS’da da benzer durumlarla karşılaşmaya başlanıyor.

Bu sorunları çözmek için, öncelikle hedeflediğiniz minimum desteklenen işletim sistemi sürümlerini belirlemek önemlidir. Daha sonra, @available ve if-else bloklarını kullanarak kodunuzu koşullu derlemeye tabi tutabilirsiniz. Böylece, farklı platformlarda farklı kod bloklarını çalıştırabilirsiniz.

Ayrıca, UI’ı platformdan bağımsız hale getirmek için Swift Packages gibi teknolojileri kullanabilirsiniz. Böylece ortak bir UI katmanı oluşturup, altta farklı platformlar için özelleştirilmiş kod barındırabilirsiniz.

Son olarak, SwiftUI’yi native framework’lerle birlikte kullanmak, eski sürümlerle uyumluluğu artırabilir. Ancak bu, SwiftUI’nin sağladığı declarative syntax ve kolay prototipleme avantajlarından ödün vermek anlamına gelebilir.

Doğru dengeyi bulmak SwiftUI’de cross-platform uyumluluğu sağlamanın kilit noktasıdır. Koşullu derleme, ortak UI katmanları ve native entegrasyon bu konuda yardımcı olabilir.

SwiftUI’ın en önemli avantajları

  • Deklaratif API: UI widget’ların nasıl görüneceğini tasvir eden deklarasyonlar kullanılır, böylece UI daha hızlı oluşturulur.
  • Platformlar arası uyumluluk: SwiftUI kodu iOS, iPadOS, macOS, WatchOS ve TVOS cihazlarında çalışır.
  • Canlı görünüm: UI değişiklikleri anında görüntülenir, sayfaları sürekli yeniden derleme gerekmez.
  • Programlama stili: Daha okunabilir kod, az kod yazımı.

Ancak bazı koşullarda uyumluluk sorunları da yaşanabilir. Bunları çözmek için:

  • UIKit kontrolleri ile birlikte kullanım: UIKit için kod yazıp onu SwiftUI’ye entegre etmek gerekir.
  • Eski projelerde kullanım: Mevcut kodu yeniden yapılandırmak ve UIKit kullanan kısımları ayıklamak gerekir.
  • Platform özel detaylar: WatchOS, TVOS gibi platformlar için ek uyarlama gerekebilir.
  • Performans: Bazı durumlarda UIKit daha hızlı olabilir.

Dolayısıyla geçiş sürecinde bu noktalara dikkat edilerek, SwiftUI’nin avantajlarını koruyacak ve uyumluluk sorunlarını asgari düzeye indirebiliriz. Böylece yeni teknolojinin tüm faydalarından yararlanmış oluruz.