SNAPKit nedir nasıl kullanabiliriz?

Alaattin Bedir
Etiya
Published in
2 min readFeb 23, 2018

İlk iPhone modelleri 320x480 ekran çözünürlüğü sahip olduğu için layout sadece bir cihaza göre oluşturmak yeterli oluyordu. Sonradan iPhone 5 ve özellikle iPhone6 ve iPhone6 Plus modelleri geldikten sonra ekranları her cihaza uygun olarak geliştirmek artık çok önemli bir hale gelmişti. Interface Builder ile AutoLayout kullanarak ekranları oluşturmak oldukça kolaylaştırılmış olmasına rağmen bunun koddan yapmakta bir o kadar da zordur. Özellikle dinamik ekranlar için bu bir ihtiyaç olduğundan koddan constraintleri oluşturmak gerekiyordu. Apple iOS SDK da kullanıma sunduğu NSLAyoutConstraints kullanımı kod karmaşıklığını artırıyor ve kullanımıda kolay değildi. İşte tam bu noktada SNAPKit yardımımıza koşuyor. SNAPKit ile “swifty“ olarak okunabilirliği daha iyi hızlı ve kolay bir şekilde constraintlerimizi artık oluşturabiliriz :)

Örnekler ile nasıl kullanabileceğimizi bir inceleyelim.

SNAPKit kütüphanesini CocoaPods ile entegre ettikten sonra bütün view’lerde snp attribute ile SNAPKit kütüphanesine ulaşabiliriz. Constraint oluşturmak için makeConstraint methodunu kullanıyoruz closure olarak parametre alan bu fonksiyon ile kolayca ve çok daha anlaşılabilir constraintler oluşturmamız mümkün oluyor.

Önce çoğunlukla kullandığımız padding işlemine bir bakalım. Container view’e 20 pts padding ile bir kutu yerleştirmek istiyorsak bunu aşağıdaki şekilde kolayca yapabiliriz.

.equalTo methodunda hangi view’e göre konumlandıracağımızı seçiyoruz. equalTo methodu parametre olarak View, ViewAttribute veya sabit bir sayı değeri alabiliyor. Burada ayrıca ihtiyaca gore .lessThanOrEqualTo ve .greaterThanOrEqualTo methodlarını da kullanabiliriz. Offset methodu ilede ne kadar margin vermek istiyorsak onu giriyoruz.

SNAPKit ile aynı anda birden fazla constraint tanımlama imkanına da sahibiz. make.size ile view’in size’ını ayarlayabiliriz.

Attribute’leri birbirine bağlayarak zincir yapıda oluşturabiliriz. Böylece okunabilirliği artırmış oluruz.

Bazen varolan constraintleri kaldırma veya update etmek zorunda kalabiliriz. Bu durumu SNAPKit ile 3 farklı şekilde ele alabiliriz.

  1. Referans oluşturmak

Constraint’leri class degişkeni olarak tanımlayıp farklı yerlerde kullanarak değerini güncelleyebiliriz.

2. Update etmek

Hali hazırda oluşturulmuş bir constraint snp.updateConstraints ile değistirmemiz mümkündür. Bu durumlar için Apple tavsiye ettiği updateConstraints() methodunu override ederek işlemi yapabiliriz.

3. Yeniden oluşturmak

snp.remakeConstraints ile önce varolan constraintler remove edilir ve sonrasında tekrar create edilirler.

--

--