İçeriğe geç

UINib to UIView işlemi

Merhabalar bu yazımda UINib kullanarak UIView sınıflarını Storyboard üzerinde anlık olarak görüntüleme ve kullanım işlemini nasıl yapabileceğinizi göstereceğim.

UINib kullanımı tüm tasarımsal işlemler için tavsiye edilmez. Ancak bir çok yerde kullandığımız generic UI işlemlerinde kullanmamız negatif tarafını pozitife çevirmemizi sağlar.

Xcode üzerinde .xib uzantılı bir nib oluşturduktan sonra içerisine gerekli nesneler yerleştirebilirsiniz. Daha sonrasında bu nesneleri bağlayacağımız ve storyboard üzerinde eklediğimiz bir UIView üzerinde bu nib dosyasını görüntülememiz için bir UIView sınıfı yazmamız gerekli.

import UIKit

@IBDesignable
class GenericView: UIView {
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        setup()
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setup()
    }
    
    override func awakeFromNib() {
        super.awakeFromNib()
    }
    
    func setup() {
        let view = loadNib()
        view.frame = self.bounds
        view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        backgroundColor = UIColor.clear
        addSubview(view)
    }
}

UINib, UIView dönüşümü için sizlere basit bir extension paylaşayım.

extension UIView {
    func loadNib() -> UIView {
        let bundle = Bundle(for: type(of: self))
        let nibName = type(of: self).description().components(separatedBy: ".").last!
        let nib = UINib(nibName: nibName, bundle: bundle)
        return nib.instantiate(withOwner: self, options: nil).first as! UIView
    }
}

Not: Yukardaki Extension içerisinde bulunan fonksiyonun çalışması için nib file ile sınıfın aynı isimde olması gerekmekte. Farklı isimler kullanacaksanız nibName değiştirip kullanabilirsiniz.

Storyboard üzerinde oluşturduğumuz ve kullanmamız gereken ekrana eklediğimiz UIView nesnesinin sınıfını yaratmış olduğunuz sınıf adını eklemeniz gerekmekte. Böylelikle sınıfımız @IBDesignable olduğu için storyboard üzerinde anlık olarak görüntülenecektir.

Çok fazla nib kullanımı uygulamanın gereksiz şişmesine ve build süresinin uzamasına sebep olur. Gerek olmadıkça kullanmanızı tavsiye etmem. Yapmanız gereken tasarımı çoğunlukla Storyboard üzerinde geliştirebilirsiniz.

 

Tarih:iOS

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Copyright © 2020 Kenan Atmaca