ios开发布局

Swift Xib 加载 View 方式,Xib 加载多个Vi

2020-02-20  本文已影响0人  JasonFive
一、使用方法

本来直接使用 Bundle.main.loadNibNamed 方法就可以直接加载了,但是为了更方便简洁的方式加载使用以下方法
新建一个 NibLoadable 文件

/// 定义一个协议
protocol NibLoadable {
    /// 具体实现写到 extension 中
}

/// 加载xib
extension NibLoadable where Self : UIView {
    /* Xib 和 类名 同名
     * lazy var headerView = HomeHeaderView.loadFromNib()
     *
     * Xib 中多个 View 视图
     * lazy var sectionView = Level1SectionView.loadFromNib("Level1HeaderView",index: 1) */
    
    
    /// 协议中不能定义class
    static func loadFromNib(_ nibname:String? = nil,index:Int = 0) -> Self { // Self(大写)当前类对象
        /// self(小写)当前对象
        let loadName = nibname == nil ? "\(Self.self)" : nibname!
        return Bundle.main.loadNibNamed(loadName, owner: nil, options: nil)![index] as! Self
    }
}

使用

/// Xib 和 类名 同名
lazy var headerView = HomeHeaderView.loadFromNib()
/// Xib 和 类名 不同名
lazy var sectionView = HomeHeaderView.loadFromNib("sectionView")
/// Xib 中多个 View 视图
lazy var sectionView = Level1SectionView.loadFromNib("Level1HeaderView",index: 1)
二、Xib加载多个 View

先自定义一个UIView

/// section view
class Level1SectionView: UIView,NibLoadable {
    override func awakeFromNib() {
        super.awakeFromNib()
    }
}

然后再在Xib中添加一个UIView

2.stp.jpg

然后设置Class,然后再使用上面方法直接调用

上一篇下一篇

猜你喜欢

热点阅读