首页 > 解决方案 > 不能与 SwiftUI Datepicker 重叠文本

问题描述

我试图用文本视图覆盖一个日期选择器,因为 SwiftUI 日期选择器不是很可定制。通过这种方式,我可以控制标签与日期选择器颜色不同的外观。

我遇到的问题是,当有东西放在它上面时,日期选择器没有注册水龙头。在 ZStack 或 .overlay 中。

我尝试了许多不同的解决方法,例如将文本前面的 .opacity 设置为零

ZStack {
    DatePicker("Due Date", selection: $startDate, displayedComponents: .date)
        .labelsHidden()
        .cornerRadius(10)
        .allowsHitTesting(true)
    Text("hi this is text")
        .allowsHitTesting(false)

}

有什么帮助吗?

标签: iosswiftxcodeswiftui

解决方案


您可以采取相反的方法并翻转 的顺序ZStack,将的不Text透明度DatePicker设置DatePicker为较低的值。甚至更清洁的只是使用background

DatePicker("Due Date", selection: $startDate, displayedComponents: .date)
            .labelsHidden()
            .allowsHitTesting(true)
            .opacity(0.0101)
            .background(Text("Hi - this is text!"))

SwiftUI 不会跟踪对不可见元素的点击,因此不透明度不能为 0。事实上,它似乎停止向任何东西注册<= 0.1。所以,它并不完美,但对我来说它看起来很不可见。


推荐阅读