SwiftUI:如何将图标对齐到居中文本字段的左侧?

发布于 2025-01-10 00:49:43 字数 409 浏览 1 评论 0原文

我在 SwiftUI 中有一个位于屏幕中央的 TextField。我想立即添加一个铅笔图标。它的左侧表明它是可编辑的 - 我该如何做到这一点?我尝试将 TextField 和 Image 嵌入到 HStack 中,如下所示:

HStack {
  Spacer()
  Image(systemName: "pencil")
  TextField(...)
}

但这只会产生类似这样的结果: 在此处输入图像描述其中文本字段不再居中,并且铅笔与屏幕左侧对齐。

任何指导表示赞赏。

I've got a TextField in SwiftUI that is centered on the screen. I want to add a pencil icon immediately. to the left of it to indicate that it is editable - how can I do this? I've tried embedding both the TextField and Image in an HStack like this:

HStack {
  Spacer()
  Image(systemName: "pencil")
  TextField(...)
}

But that only yields something like this: enter image description here
where the textfield is no longer centered and the pencil is aligned to the left of the screen.

Any guidance is appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

安人多梦 2025-01-17 00:49:43

这应该可以做到:

        TextField("", text: $input)
            .overlay(alignment: .leading) {
                Image(systemName: "pencil")
                    .offset(x: -24, y: 0)
            }

this should do it:

        TextField("", text: $input)
            .overlay(alignment: .leading) {
                Image(systemName: "pencil")
                    .offset(x: -24, y: 0)
            }
提笔书几行 2025-01-17 00:49:43
struct CustomTextFieldView: View {
     @State private var text: String = ""
    
     var body: some View {
        VStack(alignment: .leading) {
            textfeild
                .padding()
        }
    }
    var textfeild: some View {
        HStack {
            Image(systemName: "pencil")
            TextField("Edit me!", text: $text)
        }
        .textFieldStyle(DefaultTextFieldStyle())
    }
}

struct CustomTextFieldView_Previews: PreviewProvider {
    static var previews: some View {
        CustomTextFieldView()
    }
}
struct CustomTextFieldView: View {
     @State private var text: String = ""
    
     var body: some View {
        VStack(alignment: .leading) {
            textfeild
                .padding()
        }
    }
    var textfeild: some View {
        HStack {
            Image(systemName: "pencil")
            TextField("Edit me!", text: $text)
        }
        .textFieldStyle(DefaultTextFieldStyle())
    }
}

struct CustomTextFieldView_Previews: PreviewProvider {
    static var previews: some View {
        CustomTextFieldView()
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文