我使用Rectangle()
在TextField上添加底部边框(SwiftUI)
但我想使用protocol TextFieldStyle
作为TextField样式的底线,如RoundedBorderTextFieldStyle
如何在不使用Rectangle的情况下为TextField创建自定义样式?
https://developer.apple.com/documentation/swiftui/staticmember
struct ContentView : View {
@State private var username = "Text Hellow"
var body: some View {
VStack() {
TextField($username)
.foregroundColor(Color.yellow)
Rectangle()
.frame(height: 1.0, alignment: .bottom)
.relativeWidth(1)
.foregroundColor(Color.red)
}
.padding()
}
func editChanged() {
}
}
#if DEBUG
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
7条答案
按热度按时间ui7jx7zq1#
分割器
可用于分隔其他内容的可视元素。
您可以设置
color
和height
xqnpmsa82#
使用
.overlay
使用
VStack
是为了确保Divider
总是水平的。w1e3prcc3#
要在不使用Rectangle的情况下实现TextField的自定义样式,而是遵循SwiftUI中的TextFieldStyle协议
用途:
omtl5h9j4#
kontiki的解决方案不适用于Beta 6。因此,我创建了一个解决方案,在新视图中嵌入TextField和绘制的底线。你可以复制代码并通过编写
TextFieldWithBottomLine(placeholder: "My placeholder")
来使用它。我创建的第一个东西是一条水平线:
接下来,我创建一个包含TextField和下面HorizontalLine的视图:
为了查看它的实际效果,我创建了一个示例视图:
7cjasjjr5#
要定义自定义样式,可以使用下面的代码。Rectangle最终会被使用,但是在自定义样式中,而不是在视图代码中。这就是你想要的吗
注:测试版3
要使用自定义初始化程序,请执行以下操作:
您的自定义初始化器实现:
ifsvaxew6#
我的解决方案是在文本字段下添加一个分隔符:
或使用覆盖
lh80um4z7#
换个方式试试
LineView:为
UIView
创建自定义 Package 器