美文网首页selector
SwiftUI 对比 Interface Builder an

SwiftUI 对比 Interface Builder an

作者: 老鹰_ | 来源:发表于2020-11-05 10:47 被阅读0次

每个有经验的iOS开发人员都熟悉interfacebuilder和storyboard。你可能不喜欢它们,但至少熟悉它们。如果你以前没用过这些,可以跳过这一章。

还在这里吗?好的-这意味着你以前用过IB,可能很好奇SwiftUI有什么不同。

好吧,让我问你一个问题:你经常手工编辑storyboard或XIB吗?

可能很少或没有。好吧,但总的来说答案是否定的——interfacebuilder和storyboard包含大量不易阅读或编辑的XML。

更糟糕的是,storyboard会随着开发时间的推移,变得越来越大。当然,它初始时很小,但是再你添加了一个又一个视图控制器后,会意识到在一个文件中有十多个视图的数据,你所做的任何源代码管理更改都会变得非常痛苦。

还有一个很糟糕的缺点就是,当开发人员通过源代码管理下拉该文件时,无法明显看到改动信息。XIB也是如此。

IB使用时,接口生成器对我们的Swift代码了解不多,而我们的Swift代码对Interface Builder也知之甚少。结果,我们最终得到了很多不安全的功能:我们用Ctrl键从IB拖动到我们的代码中来连接某个动作,但是如果我们删除了这个动作,代码仍然可以编译—— 说明IB真的不在乎它要调用的代码是否存在。

storyboard也是类似的,当我们在storyboard创建TableViewCell ,或者 创建视图控制器view controll时,我们使用字符串来标识代码中的重要对象,甚至有自己的名称:“stringly typed api”。即使这样我们也需要使用类型转换,因为Swift无法知道storyboard返回的TableViewCell的具体类型。

导致问题存在是因为 IB、storyboard和Swift 是各自独立的。

SwiftUI打破了这种传统方式。它是一个只支持Swift的UI框架,这并不是因为苹果认为Objective-C是时候消亡了,而是因为SwiftUI可以充分利用Swift的所有功能——值类型、不透明返回类型、协议扩展等等。

不管怎样,我们很快就会知道SwiftUI是如何工作的。目前至少需要知道的是,SwiftUI修复了人们使用旧Swift+Interface Builder方法时遇到的许多问题:

1 不再需要争论程序设计或基于故事板的设计,因为SwiftUI同时给了我们两者。

2 不再需要担心在提交用户界面工作时会产生源代码管理问题,因为代码比脚本XML更易于阅读和管理。

3 不必太担心string类型的api了——仍然有一些,但明显更少。

4 不再需要担心调用不存在的函数,因为我们的用户界面由Swift编译器检查。

上述都是迁移到SwiftUI的好处。

概念Interface Builder

xib和nib都是Interface Builder的图形界面设计文档,nib这个名字来自于NeXTSTEP系统,在NeXTSTEP被Apple收购之前,一直使用nib作为Interface Builder的图形文档,nib的发展经过了nib2.0,nib3.0,到NeXTSTEP被Apple收购之后,带有NeXTSTEP标志的nib被换成了xib

与nib不同的是,xib是一个XML格式的纯文本文件,而nib是一个二进制文件,xib比nib有个很明显的好处,就是xib可以很方便地进行diff操作。由于xib是文本文件,所以在版本控制和管理方面比nib更有优势。然而,不论在 Interface Builder中选择的是nib还是xib格式,Xcode编译后都将得到一个供程序运行时使用的经过编译的二进制nib文件。

引用《Cocoa Programming for Mac OSX》一书的说法,Interface Builder 把窗口、菜单栏以及窗口上的各种控件的对象都“冻结”在了一个 NIB文档里面了;程序运行时,这些对象将会“苏醒”。

相关文章

  • SwiftUI 对比 Interface Builder an

    每个有经验的iOS开发人员都熟悉interfacebuilder和storyboard。你可能不喜欢它们,但至少熟...

  • xib和storyboard的对比

    xib和storyboard的对比 共同点 都是用来描述软件界面 都用运用Interface Builder工具编...

  • 011:Xib的使用

    Xib和storyboard的对比 共同点: 都用来描述软件界面 都用Interface Builder工具来编辑...

  • xib 和 storyboard

    xib和storyboard的对比 共同点 都是用来描述软件界面 都用运用Interface Builder工具编...

  • Start Developing iOS Apps (Swift

    添加对Interface Builder的支持 如果你在Interface Builder中看rating控件,你...

  • iOS开发之UI(十三)

    1.interface Builder可视化编程 Interface Builder简介 GUI:图形用户界面(C...

  • iOS界面开发的方法论之争(IB还是Code)

    代码写界面 vs Interface Builder Interface builder 是一套非常快捷的构建界面...

  • Interface Builder

    view与xib连线的输出口报: '[ setValue:for...

  • Interface Builder

    参考文档1参考文档2 近来系统学习了《利用IB优雅地开发UI》,收获颇多。开始接触可视化编程时,非常喜欢,简单高效...

  • 闭包

    IB(Interface Builder, 界面构造器)。 NIB(NextStep Interface Buil...

网友评论

    本文标题:SwiftUI 对比 Interface Builder an

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