War*_*ior 8 ios swiftui actionsheet
有没有办法在操作表中没有标题部分?SwiftUI 代码中的 Action Sheet 定义如下:
public struct ActionSheet {
/// Creates an action sheet with the provided buttons.
public init(title: Text, message: Text? = nil, buttons: [ActionSheet.Button] = [.cancel()])
/// A button representing an operation of an action sheet presentation.
public typealias Button = Alert.Button
}
Run Code Online (Sandbox Code Playgroud)
由于标题只符合文本,我想也许只添加 Text("") 就可以了;然而,这反而将标题的空间保留为空,而不是将其删除。给 nil 而不是 Text("") 也不起作用。
另外,有没有办法给动作表的按钮一个视图,如下所示:
struct ActionItem: View {
var body: some View {
HStack {
Image(systemName: "phone")
Spacer()
Text("Call 1-408-123-4567")
}
}
}
Run Code Online (Sandbox Code Playgroud)
Joh*_* M. 15
最简洁的答案是不。SwiftUI 的当前实现将始终为标题腾出空间,并且只会Text为其按钮获取视图。
目前还不清楚这是否是因为苹果在今年发布 SwiftUI 之前只有这么多时间,并且想要解决最简单和最常见的用例,或者他们是否采取了原则立场,即 ActionSheets 应该始终具有标准外观,包括标题和只有文本按钮。我们将不得不拭目以待。
Dan*_*sko 12
苹果通过 iOS 15 和新推出的confirmationDialogAPI 回应了我们的呼吁。ActionSheet此版本中也已弃用。
ConfirmationDialog已作为视图修饰符添加,可以在任何视图上使用,与.actionSheet我们之前使用的 API 非常相似。使用新对话框时,我们可以指定隐藏标题,并可以使用按钮 API 来role控制按钮外观。
下面是在简单视图上使用它的示例。
struct ContentView: View {
@State private var isShowingDialog: Bool = false
var body: some View {
VStack {
Button {
isShowingDialog = true
} label: {
Text("Tap Me")
}
.confirmationDialog("", isPresented: $isShowingDialog, titleVisibility: .hidden) {
Button("Normal") {
}
Button("Delete", role: .destructive) {
}
Button("Cancel", role: .cancel) {
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3176 次 |
| 最近记录: |