【发布时间】:2020-08-13 10:40:03
【问题描述】:
我一直在尝试以编程方式突出显示 SwiftUI Button,但到目前为止没有成功……
当然我可以再次实现整个事情,但我真的很想利用 SwiftUI 已经提供的功能。我想有一个我们可以改变的环境或状态变量,但我找不到这些。
这是我想要实现的一个小例子:
struct ContentView: View {
@State private var highlighted = false
var body: some View {
Button("My Button", action: doSomething())
.highlighted($highlighted) // <-- ??
Button("Toggle highlight") {
highlighted.toggle()
}
}
func doSomething() { ... }
}
在 SwiftUI 中实现如此简单的事情似乎很奇怪。有人找到解决方案了吗?
【问题讨论】:
-
您能否为您的代码提供您希望在何处/如何(在何种条件下)突出显示 按钮? highlight 是什么意思 - 颜色、边框、文本......以及何时/如何取消突出显示?因为目标有点模糊。
-
当然,让我编辑问题。关于我所说的 highlight 的意思,它实际上是 SwiftUI 所做的一切:背景颜色、颜色……取决于上下文。
-
如果你的意思是让按钮执行默认高亮,那么现在在 SwiftUI 中是不可能的。如果您的意思是自定义突出显示,那么您需要ButtonStyle,例如stackoverflow.com/questions/62678306/…,解决方法是相同的。
-
感谢@Asperi,我仍然无法相信即使在 iOS 14 中也无法访问配置的
isPressed属性。这是我期望从任何 UI 框架中获得的基本行为!
标签: swiftui