概览
作为 Apple 开发者而言,每期 WWDC 官方视频无疑是我们日常必看的内容。
不过,小伙伴们是否发现视频中有些示例代码在我们自己测试时却无法编译这一尴尬的情况呢?
在本篇博文中,我们将通过一则非常简单的示例来向大家展示为什么会出现这种情况,以及如何解决它!
闲言不再,Let‘s go!!!😉
无法编译! 搞什么飞机?
Apple 在 WWDC21 关于 SwiftUI 3.0 的介绍视频中,曾经谈到了 Button 视图新的显示方式。
其中, 该演示视频强调过,码农们可以用新加入的 .buttonStyle(.bordered)、 .controlSize(.large) 以及 .controlProminence(.increased) 修改器方法来进一步增强按钮的外观显示:
Button {
...
} label: {
Text("Continue")
.frame(maxWidth: .infinity)
}
.buttonStyle(.bordered)
.controlSize(.large)
.controlProminence(.increased)
.padding(.horizontal)
按钮的显示应该为如下效果:
不过,现在我们在 Xcode 14.3 中编译如上代码,妥妥的会报错:
因为 SwiftUI 根本找不到 controlProminence() 这个方法!这是怎么回事呢?
Apple 的“小心机”
Apple 在每次 WWDC 视频中都会展示一些新的功能,其中包括一些新的方法,属性和类等。
不过,上述这些内容并不都是“板上钉钉”的事,有些可能会在正式代码中做出修改甚至删减。
Apple 这种又想“炫酷”又时常“翻脸”的行为,对我们这些秃头码农来说是非常蛋疼的。
博文开头的“惨案”就由此而引出。
在 WWDC 视频发布时苹果“一拍脑袋”想出了个 controlProminence() 方法来渲染背景突出按钮的显示效果,可在 SwiftUI 3.0 正式发布时却觉得不妥做了人道毁灭!
都快两年了,你好歹也更新一下原来错误的视频啊!不可能!这对 Apple 来说绝不可能!!!
解决之道
所幸的是,诸如此类问题我们都可以自行搜索到解决之法,比如在一些技术大牛(比如我 😉 )的博客、stackoverflow、Apple 官方论坛、某哥里等待。
拿上面的问题来说吧,Apple 连吱都不吱一声就删除了 controlProminence() 方法,而将 SwiftUI 按钮背景突出显示的功能放在了 buttonStyle 的 borderedProminent 样式中,你说气人不气人 😐!
所以,原来的代码现在应该修改为如下样式:
Button {} label: {
Text("Continue")
.frame(maxWidth: .infinity)
}
.buttonStyle(.borderedProminent)
.controlSize(.large)
.padding(.horizontal)
现在疑惑终于解开了,我们又可以边掉头发边观赏可能有些许“变质”的 WWDC 官方视频了!棒棒哒!💯
总结
在本篇博文中,我们讨论了为何有些 官方 WWDC 视频中的示例代码无法编译通过的问题,并给出解决思路。
感谢观赏,再会 😎