6 Şubat 2015 Cuma

Swift ile IOS Programlamaya Genel Bakış

Japonca macerası yazılarımdan sonra biraz da teknik bişeyler yazayım da blogumun çeşitliliği yerine gelsin dedim.

Bunun yanında Japoncamı da geliştirmek için yazıyı Japonca yazmaya karar ver.... şaka şaka :P

Bu yazımda iOS'a yeni başlayan ve Objective C bilmeyen biri olarak Swift ile programlamanın benim için ne ifade ettiğinden bahsedeceğim.

Öncelikle Objective C bilmiyorum ama gördüğüm kadarı ile yapısı C ile benzer ve okunması zor gibi duruyor. Swift'e başladığımda ilk hissettiğim şey herşeyin programcıların işini kolaylaştıracak biçimde hafifletilmiş olması, dilin yapısının çok basit olduğu ve geliştirme ortamının da tasarım ve programlamayı bütünleştiren bir yapıda olduğu idi.
Swifti öğrenmeye bugün başlasanız bir hafta içinde çok çok güzel uygulamalar çıkartabilirsiniz.

Mobil programlama hakkında çok şey bilmiyorum fakat bu alanda tasarım ile ilgili Android'de de iOS'da da bir açık var gibi duruyor. Native bir mobil uygulama yapıyorsanız arayüzde bazı kısıtlarla karşılaşıyorsunuz. Yada ben henüz kısıtları nasıl aşacağımı öğrenemedim. Başlangıçta bu bir sorun gibi gözükse de aslında iOS sizi diğer uygulamalarla bütünleşebilecek, telefonun akışını bozmayacak bir tasarıma itiyor gibi. Bu da kullanıcı alışkanlıkları açısından aslında güzel bir durum.

Uygulamanın arayüz tasarımını Main.storyboard'da hazırlıyoruz ve daha sonra oluşturduğumuz ViewController'lar ile Main.storyboard'a eklediğimiz viewlere ait bileşenleri controller'lara bağlıyoruz. (Burda ne dedim niye dedim bana bunu kim dedirtti ben de anlamadım .)

Şöyle ki Main.storyboard dosyamıza eklediğimiz ve düzenlediğimiz bir ViewController aşağıdaki gibi görünüyor.
Bu ViewController'a sürükle bırak yöntemi ile aşağıdaki gibi label, button, navigation bar, table view gibi birçok eleman ekleyebiliyoruz.

Screen Shot 2015-02-06 at 7.52.27 PM

Bu eklediğimiz elemanları yönetebilmek için ise ViewController.swift dosyamızı kullanıyoruz. Bu dosyada Label'ların değerini değiştirmek, Tableview'e data yüklemek, kullanıcı tarafından Textbox'lara girilen değerleri kontrol etmek gibi işlemleri Swift programlama dili ile yapıyoruz.

Swift ile iOS programlamada genel olarak uğraşacağınız dosyalar Main.storyboard ve .swift dosyaları olacak.

Programlama akışı storyboard'da görseli hazırlayıp .swift dosyasına elemanları bağlayıp istediğiniz işlemi yapmak bu kadar... :)

Şimdi yeni başlayanlar için ihtiyaç duyulabilecek bazı özelliklerden bahsetmek istiyorum.

Segue

Başlangıçta SingleView projesi ile oluşturulmuş tek sayfalık uygulamalar yeterli olacaktır fakat biraz ilerlediğinizde birden çok view'e ihtiyaç duyacaksınız. Ve bu viewleri birbirine bağlamanız gerekecek. Bunu segue'ler yardımıyla yapıyoruz. Butona tıkladığında otomatik olarak sayfa geçişlerini main.storyboard'dan ekleyebildiğiniz gibi controller.swift dosyalarınızda programlama yaparak kontrollü biçimde sayfalar arası geçişi de sağlayabilirsiniz. İleride bununla ilgili bir yazı yazacağım.

Navigation Controller

Uygulamanızın bir bütün olarak görünmesi için oluşturduğunuz viewleri kontrol edebileceğiniz bir navigation controller'a ihtiyaç duyacaksınız.
Araştırmalarım sonucunda bu yapıyı basit bir şekilde sağlayan bir kütüphaneye rastladım. Bu kütüphane uygulamanın hangi sayfasında olursanız olun sağdan veya soldan(seçiminize göre) parmağınızla sürüklediğinizde menüyü görmenizi sağlıyor. Aşağıdaki linkten son sürümünü indirip uygulamanızı bu yapının üzerine kolayca oluşturabilirsiniz.

Kütüphanenin Github Linki:  https://github.com/evnaz/ENSwiftSideMenu

Fontlar ve İconlar

Mobil uygulamalarda olmazsa olmaz arayüzü güzelleştiren şeyler bence iconlardır. Uygulamanız iconlarla bir anda çok değişebilir. Bu yüzden iconlar için uygulamanıza font ekleme ihtiyacı duyabilirsiniz.

Bunu yapmak için öncelikle istediğiniz fontu indirip uygulamanıza kopyalamanız gerekecek. Ben Font Awesome'ı kullandım.

Github Linki: http://fortawesome.github.io/Font-Awesome/

Kullanabileceğiniz iconlar : http://fortawesome.github.io/Font-Awesome/icons/

Githubdan indirdiğiniz dosyanın içinden .ttf uzantılı dosyayı xcode'a sürükleyip kopyalayın.

Projenize eklendiğinden emin olmak için Projenizin ismine tıklayıp Build Phases menüsündeki Copy Bundle Resources kısmında ekli olduğundan emin olun. Eklenmemişse kendiniz buraya ekleyin.

Projenizin içinde Supporting Files dizini altında Info.plist dosyasının içine fontawesome'ı eklememiz gerekiyor. Bunun için bir satıra tıklayıp + işaretine basarak yeni bir alan oluşturun bu alana "Fonts provided by application" yazın ve tipini Array olarak değiştirip kaydedin.

Daha sonra yandaki ok işareti ile Array'i genişletip Item 0 String değerini font dosyanızın adıyla değiştirin

FontAwesome için : "fontawesome-webfont.ttf"

Artık fontunuz eklendiğine göre istediğiniz label'ın veya button'un fontunu Font Awesome ile değiştirdikten sonra değerini istediğiniz iconun unicode değerine aşağıdaki şekilde eşitleyebilirsiniz.

Button için ;

button.setTitle("\u{f04b}", forState: UIControlState.Normal)


Label için ;


label.text = "\u{f027}"


Custom Cell 

Table view'e şimdiye kadar çok ihtiyaç duydum büyük ihtimalle siz de uygulamanızın bir yerinde mutlaka ihtiyaç duyacaksınız. Uygulamanıza eklediğiniz Table'ın cell'lerine yani her bir satırına kayıtla ilgili resim button veya buna benzer bileşenler ekleyerek tablonuzu Swift'te tanımlı olmayan bir yapıda oluşturmak isteyebilirsiniz. Bunun için TableView içine yerleştireceğiniz Cell yapısını kendiniz tanımlamanız gerekiyor ve bu Cell yapısını kontrol edebilmek için bir CellController Swift dosyası yazmanız gerekiyor. Bununla ilgili de ayrıntılı bir yazı yazmayı planlıyorum bu yüzden şimdilik sadece böyle birşeye ihtiyaç duyarsanız Swiftte kolayca yapabileceğinizi bilmenizi istiyorum. Custom Cell yazımı paylaşana kadar bu konuyla ilgili sorularınız olursa yorum yazabilirsiniz.

Bu yazıyı genel olarak Swift ile ilgili bir fikir edinmenize elimden geldiği kadar katkıda bulunmak ve şimdiye kadar ihtiyaç duyduğum şeylere nasıl çözüm bulduğumla ilgili tecrübeleri paylaşmak için yazdım.

Swift ile şunu yapmak için neyi araştırmam gerekiyor gibi sorularınız varsa şimdiye kadar denediğim ve bildiğim kadarıyla cevap verebilmem için yorum yazabilirsiniz.

3 yorum:

  1. Ip adresinizin bilinmesi neyi değiştirir bilmiyorum lakin elimden geldiğince cevap vereyim :D
    Öncelikle Swift ile programlama yapabilmek için bir Mac'e sahip olmanız gerekiyor. (Windows üzerinde de sanal makinada MacOSX kurulabiliyormuş )
    Xcode6 geliştirme ortamını Apple Store vasıtasıyla kurmanız gerekiyor.
    Geliştirme ortamını kurduğunuza göre Swift dilinde küçük programlar yazmaya başlayabilirsiniz.
    Ben bu aşamadan sonra şu yolu izledim tavsiye ederim.
    Öncelikle Swift diline hakim olabilmek için Apple'ın swift kaynaklarından yararlandım.
    ( https://developer.apple.com/swift/resources/ )

    Bunu yaparken bir yandan konuları takip ederken bir yandan da denemeler yaptım.

    Xcode6 ile gelen yeni bir özellik olan playgroundlar sayesinde öğrenmek daha kolay oluyor. Bir playground oluşturduğunuzda sol tarafta kod yazarken sağ tarafta çıktısını anlık olarak görebiliyorsunuz. Böylece swift dilini pekiştirmiş oluyorsunuz.
    Swiftin yapısını genel olarak öğrendikten sonra mobil uygulama geliştirmeye geçiş yaptım.
    Udemy'de Swift programlama dili eğitimi ( https://www.udemy.com/complete-ios-developer-course/ ) üzerinden ilerledim Bu derslerde yapılan örnekleri kendim de denedim. (Kursun içeriği tam olarak xcode6 ile uyumlu değil fakat yavaş yavaş düzeltiyorlar ve genelde konu ile ilgili yorumlarda hataların çözümü oluyor)
    Daha sonra kendi uygulamamızı yazmaya başladım genelde karşıma çıkan problemler kursta denediğim şeylerdi. Ama navigation controller gibi kursta hiç değinilmeyen konular da vardı. Bunları kendi araştırmalarımla buldum.
    (Malum İngilizce olayına hiç girmiyorum. :)

    YanıtlaSil
  2. :D ehe -2 rep almışım neyseki düzelttim :D 5-2 ehe :D Teşekkür ederim ayrıca stanford üniversitesi swift eğitimi başlattı iTunes üzerinden indirilir durumda. Troller gibi olmuş yorum lakin genel bir bakış için kaynak tavsiyeleri de olması iyi olur diye düşünmüştüm :D umarım bir swift serisi yazarsın ve türkçe kaynak sıkıntılarından birini de sen giderirsin. :D iyi çalışmalar.

    YanıtlaSil