iOS - Swift 如何从 XIB 文件加载视图
在 IOS 开发中,我们经常会自定义视图 (UIView),有时界面的布局可能使用 XIB 文件可视化的方式会更方便。但是 Xcode 新建视图时并不能选择 Also create XIB file,所以需要单独创建 XIB 文件。而单独创建的 XIB 文件并不会和创建的视图类自动关联起来,这就需要我们手动关联并且使用代码加载 XIB 文件。
1. 在 XIB 设计中,选择右边第四个标签 (Identity),鼠标放上去的时候会显示 Show the Identity inspector。我用的 Xcode 版本是 Version 12.5.1 (12E507),不同版本可能会有差异。
在 Class 出填入你创建的类的名称,例如 CustomView,那就填写 CustomView,这样就把创建的类和 XIB 文件关联起来了。就可以拖拽控件到类中,自动生成一些代码
2. 由于在类中的 init 方法并不能读取 XIB 文件,而且在 init 方法中不能访问 self,所有我们需要新建一个方法,用来从 XIB 文件中读取信息并创建对象。这个方法必须是静态的,这样我们就可以使用类名直接调用,从了创建对象。这个方法可以定义为类似下面:
static func loadFromNib(frame: CGRect, titleImage: String, mainTitle: String, subTitle: String) -> CustomView { let view = Bundle.main.loadNibNamed("CustomView", owner: self, options: nil)?.first as! CustomView return view }
通过上面这个方法,我们就可以创建一个 CustomView 对象。
我们还可以创建另外一个方法,用来初始化视图,这样代码更加清晰一些,不至于 loadFromNib 方法太过庞大,并且在这个方法中还可以使用 self,也方便了不少。类似如下:
func setupViews(frame: CGRect, titleImage: String, mainTitle: String, subTitle: String) { self.frame = frame self.backgroundColor = .clear }
可以在 loadFromNib 直接调用这个方法即可:
view.setupViews(frame: frame, titleImage: titleImage, mainTitle: mainTitle, subTitle: subTitle)
自律 平静 思考 实践
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端