iAl*_*x11 4 beta contextmenu ios swift swiftui
我正在 SwiftUI 中开发 Mastodon 客户端,我希望允许用户从上下文菜单中查看帖子的预览,就像许多其他应用程序一样。
我知道我可以在 UIKit 中实现这一点,但我还没有看到如何在 SwiftUI 中实现。
例如,假设我有两个视图:CompactView 和 ExpandedView。CompactView 由Image和组成Text,行数限制为 2,因此每隔一行都被隐藏。ExpandedView 也是由 anImage和 a组成Text,但文本的行数限制为 20,以便显示所有帖子内容。
如果用户用力触摸 CompactView,我想在上下文菜单中显示 ExpandedView 而不是 CompactView。我怎样才能实现这个目标?
struct ContentView: some View {
var body: some View {
List(0 ..< 5) {
CompactView()
}
}
}
struct CompactView: some View {
var body: some View {
HStack {
Image("profile")
Text(/*Post content goes here*/)
.lineLimit(2)
}
.contextMenu {
Button("Report", action: {})
}
}
}
struct ExpandedView: some View {
var body: some View {
HStack {
Image("profile")
Text(/*Post content goes here*/)
.lineLimit(20)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的代码库不是这样的,但我想方法是相同的。
TL;DR:当用户用力触摸 SwiftUI 中的视图时,如何显示不同的视图?
提前致谢。
小智 5
首先我们需要这个 -为 SwiftUI 实现预览上下文菜单的简单方法
例如我的内容视图
struct ContentView: View {
let deleteAction = UIAction(
title: "Remove rating",
image: UIImage(systemName: "delete.left"),
identifier: nil,
attributes: UIMenuElement.Attributes.destructive, handler: {_ in print("Foo")})
var body: some View {
NavigationView {
Text("Hello, World!")
.contextMenu(PreviewContextMenu(destination: Text("Destination"), actionProvider: { items in
return UIMenu(title: "My Menu", children: [deleteAction])
}))
}
}}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2874 次 |
| 最近记录: |