Xcode 14.3 Beta Sürümü ile gelen yenilikler
Merhaba, bu yazımızda Xcode 14.3 Beta sürümü ile geliştiricileri bekleyen yeni güncellemelerden bahsedeceğiz.
Xcode 14.3 ve iOS 16.4 Beta sürümleri 16 Şubat 2023 tarihinde yayınlandı. Yeni sürüm, SwiftUI’ı etkileyen güncellemeler ve iyileştirmeler barındırıyor. Eğer bir ADP üyesiyseniz, bu adrese tıklayıp indirebilirsiniz. Yeni sürümü indirebilmeniz için ise MacOS sürümünüzün en az 13.0 (Ventura) olması gerekiyor.
Rosetta artık desteklenmiyor (Deprecated)
Yeni Xcode maalesef Rosetta’ya olan desteğini kesecek. Geliştiriciler Rosetta ile Intel tabanlı geliştirilen (genellikle eski) SDK’ları yeni Apple Silicon cihazlarda kullanıyordu. Apple ise yeni sürümden itibaren yaşanacak sorunların çözümü için bu linki bizlere sunuyor.
Print in Preview
Yeniliklerden ilki bize Preview ekranında konsolu kullanma imkanı veriyor. Örneğin, bir uygulamayı geliştirirken herhangi bir fonksiyonun içine debug mantığı ile print yerleştirebiliriz. Yeni sürümle birlikte konsola yazdırılacak yazılar için uygulamayı her seferinde çalıştırmaya gerek kalmayacak. Konsolun Preview sekmesinden anlık olarak erişebileceğiz.
Back Deploying
Vadedilen en önemli güncellemelerden biri ise Back Deploying. Geliştiriciye istediği fonksiyonları geriye dönük sürümlerde de çalıştırabilme imkanı veriyor. Halihazırda bununla ilgili canlı bir örnek yok ve oldukça kısıtlı olduğu düşünülüyor. Şu anda da sadece fonksiyonlar aracılığı ile kullanılabiliyor. Aşağıda da Apple’ın dokümanlarında verdiği örneği bulabilirsiniz.
@available(macOS 12, *)
public struct Temperature {
public var degreesCelsius: Double
// ...
}
extension Temperature {
@available(macOS 12, *)
@backDeployed(before: macOS 13) // <-- yeni ozellik burada
public var degreesFahrenheit: Double {
return (degreesCelsius
- 9 / 5) + 32
}
}
Şimdi SwiftUI özelindeki gelişmelerden bahsedebiliriz.
Scroll Bounce Behavior
Uygulamamızdaki List veya Form gibi kaydırılabilir ekranların animasyonlarını artık kontrol edebiliyoruz. Component’ın sonuna .scrollBounceBehavior()
olarak ekleniyor. İçine yazdığımız parametre .always
ise View tepesinde daima bir sekme animasyonu görüyoruz fakat .basedOnSize
ise ancak yarattığımız View ekran boyutunu aşınca sekme efekti veriyor. Buna ek olarak da optional şekilde yatay veya dikey olmasına da karar verebiliyoruz ancak örnekteki gibi View’larda dikey animasyon sabit kalıyor.
Aşağıda ise her bir kaydırma efekti sonucunu görebiliriz.
- Sol:
.always
- Orta:
.basedOnSize
fakat ekrana sığdığı için animasyon olmuyor - Sağ:
.basedOnSize
ve ekrana sığmadığı için animasyon gerçekleşiyor
Geri kalan güncellemeler ise Sheet görünümlerine geldi.
Sheet Background
Artık sheet’lerin arkaplanlarını değiştirebiliyoruz. Kullanacağımız instance .presentationBackground()
. Şu sıralar yaygın olarak kullanılan glassmorphic bir görünüme ise .ultraThinMaterial
ile ulaşabiliyoruz. Adından da anlaşılabileceği üzere de .ultraThickMaterial
da bize beyaz bir arkaplan sağlarken .regularMaterial
ise şeffaf ile opak arası bir görünüm sağlıyor.
Yukarıdaki örnek .ultraThinMaterial
sonucunu gösterirken aşağıda da .regularMaterial
ve .ultraThickMaterial
sonucunu görebilirsiniz.
Sheet Corner Radius
Arkaplanını değiştirdikten sonra dilersek köşelerinin de keskinliğini ayarlayabiliyor olacağız. Beta sürümle birlikte gelen bu yeni özelliği .presentationCornerRadius()
ile gerçekleştiriyoruz.
Sheet Scroll
Sheet’te kalabalık bir görünüme sahip olduğumuz zaman, aşağı kaydırabilmek için Sheet’in ekranı tamamen doldurması gerekiyordu. Yeni özellikle birlikte Sheet ekranın az bir kısmını kaplarken bile kaydırılabilecek. Bu özelliği sağlayan instance .presentationContentInteraction(.scrolls)
. İç parametresini .resizes
yaparsak ise her zamanki alışık olduğumuz görünüme tekrar sahip olabiliriz.
Sheet Background Interaction
Bu yenilik ise Sheet’in açıldığı asıl ekranı ilgilendiriyor. .presentationBackgroundInteraction(.enabled)
ile birlikte Sheet’in arkasında kalan ekran fonksiyonel kalmaya devam edecek. Burada not olarak düşmekte fayda var, instance içine yazdığımız .enabled(upThrough: .medium)
sayesinde tıklanabilir kısmı Sheet ile aynı boyda yaratıyoruz ve böylece arkaplanın işlevselliği için alan açıyoruz. Bunu belirtmezsek default olarak .large
kalır ve bu durum eklentinin işe yaramadığı izlenimi yaratabilir.
Sheet Size
.presentationCompactAdaptation()
sayesinde farklı cihazlar veya yatay/dikey ekranlar arasında dinamik bir görünüm elde edebiliyoruz.
struct ContentView: View {
@State private var showInfo = false
var body: some View {
Button("View Info") {
showInfo = true
}
.popover(isPresented: $showInfo) {
InfoView()
.presentationCompactAdaptation(
horizontal: .popover,
vertical: .sheet)
}
}
}
Deprecated — TableView
Tablo görünümü elde ettiğimiz TableView fonksiyonu artık bildiğimiz hali ile gelecek sürümlerde hata verecek. Beta sürümü itibarı ile TableView(of:)
kullanarak içinde kullanacağımız datayı en baştan belirtmemiz gerekiyor.
// before (will now produce an error):
Table {
TableColumn("Name", value: \.name)
TableColumn("Email", value: \.email)
} rows: {
ForEach(people) { person in
TableRow(person)
}
}
// after:
Table(of: Person.self) {
TableColumn("Name", value: \.name)
TableColumn("Email", value: \.email)
} rows: {
ForEach(people) { person in
TableRow(person)
}
}
Okuduğunuz için teşekkürler 😊
İyi kodlamalar 👨💻