Swift Xib加载方式

0.新建加载工具类 NibLoadable.swift
3FC21C62-DF40-4777-AB44-2D50D4BC4A5A.png
import UIKit

// 协议
protocol NibLoadable {
    // 具体实现写到extension内
}

// 加载nib
extension NibLoadable where Self : UIView {
    static func loadFromNib(_ nibname : String? = nil) -> Self {
        let loadName = nibname == nil ? "\(self)" : nibname!
        return Bundle.main.loadNibNamed(loadName, owner: nil, options: nil)?.first as! Self
    }
}
1.新建DemoView
B672AE80-E05E-48A9-9027-64A6C2C1C391.png
2.新建xib文件(点击文件名会自动将名字补全)
C806390A-9CF0-4BE1-81DA-E0F2006F24F3.png
3.将xib与类名进行关联
A98EABAF-3A86-4239-8D7D-36CDEEFA01EC.png
4.在DemoView中遵循NibLoadable协议
import UIKit

class DemoView: UIView, NibLoadable {
    // 可自定义属性    
    var name : String = ""
}
5.然后就可以疯狂的搞事情了
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // 加载demoview
        //方法一:
        let demoView = DemoView.loadFromNib()
        demoView.name = "why"
        view.addSubview(demoView)
        
        //方法二:
        let testView = TestView.loadFromNib("")
        testView.age = 10
        
        demoView.name = "why"
    }

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,540评论 25 709
  • 江南,多么简单的二字,却蕴含着千古柔情,却养育着多情的人儿。江南的雨,不知下到什么时候才会停,看那片花繁花似锦,在...
    Millington_米灵顿阅读 1,002评论 0 3
  • ​ 今天立冬了。 立是建立的意思,建立之刻即便开始。 冬本意是终,是结束,末了的意思,引申为收藏,储藏,...
    飞得更高翱翔远方阅读 334评论 0 0
  • 白日的忙碌 麻痹了我的思维 没有你的日子里 我疲倦了身心 夜渐深 褪下了粉尘 带着迷离眼 Ky吧里的一切照常 我还...
    小糊童Mr阅读 390评论 0 1