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 的一些拓展)
网友评论