如何在SwiftUI中使用材料设计文本字段

时间:2019-11-03 14:51:47

标签: swiftui mdc-components swiftui-form

我想在SwiftUI中使用“材质设计”文本字段组件。有一个为UIKit编写的Material Design Text Field组件,但没有为SwiftUI编写的。是否可以在SwiftUI中使用此Material Design文本字段组件?

3 个答案:

答案 0 :(得分:0)

据我所知,它不可能直接在SwiftUI中使用材质设计。但是您可以将UIKit视图集成到您的SwiftUI视图中(尽管有点繁琐,但可以对每个视图进行操作),并且可以在SwiftUI视图中使用材质设计。那就是我现在使用它的方式。

答案 1 :(得分:0)

您可以使用material-ui样式创建自己的文本字段组件,而使用swiftui则很容易。

import SwiftUI 

struct CustomFieldText: View {
@Binding var name: String
var label: String
var required: Bool = true
var indicator: Bool = false
@State private var onKeyIn = false

var body: some View {
    ZStack {
        VStack(alignment: .leading) {
            HStack {
                Text(label)
                if required {
                    Text("*")
                }
                Spacer()
            }
            .multilineTextAlignment(.leading)
            .font(.custom("ZonaPro-SemiBold", size: self.onKeyIn || self.name != "" ? 14 : 18))
            .foregroundColor(.white)
            .offset(y: self.onKeyIn || self.name != "" ? -30 : 0)
            .animation(.spring(response: 0.5, dampingFraction: 1, blendDuration: 0))
            
            Rectangle().frame(height: 3)
                .cornerRadius(10)
                .foregroundColor(Color(#colorLiteral(red: 0.8392156863, green: 0.8784313725, blue: 0.8784313725, alpha: 1)))
        }
        VStack {
            TextField(self.name, text: self.$name)
                .font(.custom("ZonaPro-SemiBold", size: 18))
                .autocapitalization(.none)
                .textContentType(.nickname)
                .foregroundColor(.white)
                .padding(.bottom, 15)
                .padding(.top, 5)
                .onTapGesture {
                    self.onKeyIn = true
                }
            .zIndex(1)
        }
        
        VStack {
            if indicator && self.name.count > 0 {
                HStack {
                    Spacer()
                    Text("Verifying")
                        .font(.custom("ZonaPro-Light", size: 10))
                        .foregroundColor(Color.white)
                }
            }
        }
    }
}}

以及如何使用它?

  CustomFieldText(name: self.$auth.email, label: "Your Email ID")

答案 2 :(得分:0)

我已经包装了 Outlined Material Design textfield,看看这些要点:

Implementation

Use

相关问题