美文网首页
Swift-便捷化Xib视图加载

Swift-便捷化Xib视图加载

作者: 查理布朗Bio | 来源:发表于2022-11-28 15:00 被阅读0次

一、创建Xib加载父类

/// 继承了UIView的Xib加载类
class DrawOnXibView: UIView {
    /// 画布
    @IBOutlet weak var canvas: UIView!
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        loadCanvas()
    }
    
    required init?(coder: NSCoder) {
        super.init(coder: coder)
        loadCanvas()
    }
    
    /// 加载画布(用于代码层加载画布,否则无法展示xib视图)
    private func loadCanvas() {
        let xibName = String(describing: type(of: self))
        guard Bundle.main.url(forResource: xibName, withExtension: "nib") != nil else {
            fatalError("\(xibName).xib file not exsit")
        }
        Bundle.main.loadNibNamed(xibName, owner: self, options: nil)
        //将画布加载至主图层
        addSubview(canvas)
        //设置布局
        canvas.translatesAutoresizingMaskIntoConstraints = false
        [
            canvas.leadingAnchor.constraint(equalTo: leadingAnchor),
            canvas.trailingAnchor.constraint(equalTo: trailingAnchor),
            canvas.topAnchor.constraint(equalTo: topAnchor),
            canvas.bottomAnchor.constraint(equalTo: bottomAnchor)
        ].forEach({ $0.isActive = true })
    }
}

二、创建自定义视图类

1.创建继承加载类的自定义类以及对应的xib文件

继承DrawOnXibView的.swift以及.xib文件

2.绑定.xib与.swift文件

绑定.xib对应类

按下列步骤进行绑定
①File's Owner
②Show the identity inspector
③Custom class - 设置关联的.swift文件名

3.绑定对应的画布视图

拉线canvas至对应UIView以绑定画布

三、完善xib类的初始化

class CustomXibView: DrawOnXibView {

    override init(frame: CGRect) {
        super.init(frame: frame)
        initialization()
    }
    
    required init?(coder: NSCoder) {
        super.init(coder: coder)
        initialization()
    }
    
    convenience init(frame: CGRect, data: Any) {
        self.init(frame: frame)
        loadData(data: data)
    }
    
    /// 待初始化方法
    private func initialization() { }
    
    /// 待加载数据
    private func loadData(data: Any) { }
}

四、自定义类的调用

let custom = CustomXibView(frame: CGRect(x:0, y:0, w:100, h:100), data: data)
view.addSubview(custom)

相关文章

  • 关于创建XIB无法改变size的设置

    其它可视化视图编程链接:关于UITableView的自定义cell加载XIB关于UIView的XIB加载 一. 对...

  • 关于UIView的XIB加载

    其它可视化视图编程链接:关于UITableView的自定义cell加载XIB关于创建XIB无法改变size的设置 ...

  • viewDidLoad

    无论是从xib文件中加载视图,还是自己创建视图,viewDidLoad方法都会被调用,而且都是在视图已经被加载后调...

  • 基类设计概述

    一、视图 注意点:1、纯代码创建试图,重写 initWithFrame: 方法就足够。2、XIB 加载视图,重写 ...

  • iOS-UIKit-View & Xib

    initWithNibName 大多用于VC和Xib连起来 ,延迟加载,等vc显示出来的时候再初始化视图 load...

  • 无标题文章

    加载xib tabBarController初始化xib intWithNibName 大前提是UIViewCon...

  • Xib创建视图子视图尺寸问题

    使用Xib创建视图可以很高效的完成,但是有时也会有问题。 问题 在初始化Xib视图时给视图的frame赋值,发现并...

  • xib 使用

    xib 的创建 1.与控制器相关联的 xib 控制器默认的构造函数直接从与其同名的 xib 文件中加载视图. 方法...

  • 加载XIB文件(两种方式)

    说明 一个xib文件可以描述多个视图,所以,我们在加载xib的时候,返回给我们的是一个数组。

  • iOS 视图控制器的生命周期

    创建对象,分配内存空间 初始化这块内存空间 加载视图 视图加载完成 视图将要出现 视图已经出现 视图将要消失 视图...

网友评论

      本文标题:Swift-便捷化Xib视图加载

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