SwiftUI: Animasyonlar (ChatGPT)

Ceren
2 min readJan 15, 2023

ChatGPT ile SwiftUI animasyonlarını inceleyelim mi?

SwiftUI ‘ın güçlü yönlerinden biri olan animasyonlar hakkında ne kadar iyiyiz? UI da bir çok özelliği ve methodu ile işimizi kolaylaştırıyor fakat bunları tüm bir UI&UX içerisinde etkileşimli kullanmak için çok ince ayarlar yapmamız gerekiyor.

Gündemde olan ChatGPT den bir kaç animasyon kodu istedim. İlk denememde bana basit iki kod bloğu verdi. Başlangıç için çok iyi…

İlk önerisinde ekrana bir kare oluşturdu ve kullanıcı bu kareyi tutup gezdirdiğinde ekranda gezebiliyor. Gezen bir kare animasyonu olarak düşünebilirsiniz.

İkinci öneride ise bu karenin üzerine tıklandığında bir renk geçişi ekledi. Fakat bu renk geçişide çok tatlı bir yumuşaklık var.

Burada onTapGesture ile renk geçişini, gesture ile de mouse takibi yaptığını görüyorum.

Oluşturduğu animasyona ait ise şu metni verdi:

“Bu kod parçacığı bir dikdörtgen oluşturur ve kullanıcının dokunuşlarını takip eder. Kullanıcı dikdörtgeni dokunduğunda, withAnimation içinde isRed değişkeni değiştirilir ve dikdörtgenin rengi animasyonlu olarak değiştirilir.

Bu örnekler sadece SwiftUI animasyonlarının nasıl yapıldığını göstermek için basittir. SwiftUI’da daha fazla animasyon seçeneği mevcuttur, örneğin animation() ve transition() gibi. Ayrıca Apple'ın SwiftUI dokümantasyonunda daha fazla örnek ve ayrıntılı bilgiye ulaşabilirsiniz.”

Bir tane kalp iconu ve beğeni animasyonu kodlamasını istedim.

https://github.com/cmlcrn17/Animation/blob/main/Documents/kalpgif.gif

“Bu kod parçacığı HeartView struct oluşturur, bu struct içinde scale, isLiked ve heartColor state değişkenleri tanımlar. heartColor değişkeni Color.red olarak başlangıçta tanımlanır. tapGesture ile kullanıcının dokunuşunu alır ve isLiked değişkeni değiştirir. isLiked true ise heartColor değişkeni Color.red olarak değiştirilir, false ise Color.gray olarak değiştirilir. Image view içinde foregroundColor ile kalp iconunun rengi değiştirilir.

Bu örnekte sadece kalp iconunun rengi değiştirilmiştir. Kendi projenizde farklı renkler kullanabilirsiniz veya kullanıcının seçtiği renkleri kullanabilirsiniz.”

Bir tane giden araba animasyonu kodlamasını istedim.

https://github.com/cmlcrn17/Animation/blob/main/Documents/arabagif.gif

“Bu kod parçacığı CarView struct oluşturur, bu struct içinde isMoving ve offset state değişkenleri tanımlar. VStack içinde Image view kullanılarak araba resmi gösterilir. Button ile kullanıcıya arabanın hareket etmesini sağlar. offset değişkeni ile arabanın pozisyonu değiştirilir. isMoving değişkeni true olduğunda araba sağa doğru hareket eder ve offset değişkeni 300 olarak atanır.isMoving değişkeni false olduğunda araba sola doğru hareket eder ve offset değişkeni 0 olarak atanır. animation ile arabanın hareketi animasyonlu olarak gösterilir.

Bu örnekte araba sağa doğru hareket etmektedir. Kendi projenizde farklı yollar kullanabilirsiniz veya araba yukarı veya aşağı gidebilir. Ayrıca arabanın hızını değiştirebilirsiniz, örneğin duration parametresini değiştirerek.”

Şimdi başta istediğim beğeni animasyonunu buton olarak geliştirmesini istedim fakat burada Button nesnesini kullanmasını bekliyodum ama o yine bir TapGesture ve Image ile ilerledi.

struct LikeButton: View {
@State private var isLiked = false
@State private var scale: CGFloat = 1.0
var body: some View {
let tapGesture = TapGesture()
.onEnded {
withAnimation(.spring()) {
self.isLiked.toggle()
self.scale = self.isLiked ? 1.5 : 1.0
}
}
return Image(systemName: isLiked ? "heart.fill" : "heart")
.resizable()
.frame(width: 50, height: 50)
.scaleEffect(scale)
.gesture(tapGesture)
}
}

Bence ChatGPT ile bir çok içerik üretebiliriz. Bu seviyede işimizi fazlasıyla kolaylaştırıyor. Geriye üzerine eklemek kalıyor.

https://github.com/cmlcrn17/Animation

--

--