美文网首页
Swift 从Nib中加载View

Swift 从Nib中加载View

作者: kingsic | 来源:发表于2020-09-12 10:08 被阅读0次

Swift 学了忘,忘了学,正式开始学写Swift的时候是从17年,但也只是仅仅的写了一些,项目中并没有实际运用过。面试的时候偶尔也会有面试官询问一些Swift相关的知识,但自己的回答也不甚满意,所以这一次打算系统性的学习一下Swift,先以OC的一些常用的方法进行过度,闲话少说,进入今天的主题:如何从Nib中加载View?

我们先来看一下 OC 中从 Nib 中加载自定义 View 的方法

[[NSBundle mainBundle] loadNibNamed:@"XibViewName" owner:nil options:nil].lastObject;

再来看一下 Swift 中从 Nib 中加载自定义 View 的方法

let xibView = Bundle.main.loadNibNamed("XibView", owner: nil, options: nil)?.first as! UIView

从代码中我们可以得知,还是熟悉的味道,还是一样的配方

这里我们再将代码进行抽取,抽成一个分类,这样以后我们在从Nib中加载view的时候,不需要写那么多代码了,接下来,我们给UIView写一个拓展,在拓展里面进行方法封装

extension UIView {
    ///
    /// Loading view from Nib
    ///
    /// Nibname doesn't need to be passed, If empty, the caller's own name
    ///
    /// - parameter nibName: Nib View name, can be empty
    ///
    /// - returns: View loaded from Nib
    ///
    class func sg_loadFromNib(_ nibName: String? = nil) -> UIView {
        let name = nibName == nil ? "\(self)" : nibName!
        return Bundle.main.loadNibNamed(name, owner: nil, options: nil)?.first as! UIView
    }
}

下次再调用的时候直接一句代码搞定,是不是很爽

 let xibView = XibView.sg_loadFromNib()
 let xibView = XibView.sg_loadFromNib("XibView")

最后附上代码托管地址SGExtensions( 这个仓库将收集 Swift 的一些拓展)

相关文章

网友评论

      本文标题:Swift 从Nib中加载View

      本文链接:https://www.haomeiwen.com/subject/vrtwektx.html