Bra*_*kle 1 swift xcode15 ios17 tipkit
现在TipKit已经由Apple发布并且应该可以在Xcode 15 beta 5上运行,我不知道如何将aTip与视图集成?
我有以下代码:
import SwiftUI
struct TipKitTestView: View {
var body: some View {
VStack {
Text("Some filler text")
UselessTip()
}
}
}
struct UselessTip: Tip {
var title: Text {
Text("Useless title")
}
var message: Text {
Text("Some useless message that is a bit longer than the title.")
}
}
Run Code Online (Sandbox Code Playgroud)
编译器不喜欢我有UselessTip()inside TipKitTestView,给出错误:Static method 'buildExpression' requires that 'UselessTip' conform to 'View'。我怎样才能编译代码?我不知道如何使提示成为视图,如果这有意义的话。
顺便说一句,什么代码可以使提示在 UIKit 中工作?我正在尝试结合使用 SwiftUI 和 UIKit 代码向我的项目添加提示,因此我不知道如何将提示集成到主要包含 UIKit 代码的项目中。有谁知道这是怎么做到的吗?
虽然 TipKit 主要是用 SwiftUI 编写的,但 Apple 提供了 UIKit 和 AppKit 实现。
要在 UIKit 中实现提示,您可以执行以下操作:
struct SearchTip: Tip {
var title: Text {
Text("Add a new game")
}
var message: Text? {
Text("Search for new games to play via IGDB.")
}
var asset: Image? {
Image(systemName: "magnifyingglass")
}
}
class ExampleViewController: UIViewController {
var searchButton: UIButton
var searchTip = SearchTip()
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
Task { @MainActor in
for await shouldDisplay in searchTip.shouldDisplayUpdates {
if shouldDisplay {
let controller = TipUIPopoverViewController(searchTip, sourceItem: searchButton)
present(controller)
} else if presentedViewController is TipUIPopoverViewController {
dismiss(animated: true)
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Apple 通过TipUIView、TipUIPopoverViewController和提供了有关 UIKit 实现的更多文档TipUICollectionViewCell。我还写了一篇文章,介绍如何将TipKit 与 SwiftUI 或 UIKit 集成。