首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >减小HStack SwiftUI的宽度

减小HStack SwiftUI的宽度
EN

Stack Overflow用户
提问于 2022-10-08 15:13:18
回答 1查看 61关注 0票数 0

我正试图制作一个聊天应用程序,但在HStack上遇到了困难。我的边框在视图的边缘,所以没有显示完整的圆角矩形。

TextField和HStack的代码是这样的。

代码语言:javascript
复制
var body: some View {
        HStack {
            CustomTextField(placeholder: Text("Enter your message"), text: $message)

            Button {
                messagesManager.sendMessage(message: message)
                message = ""
            } label: {
                Image(systemName: "arrow.up.circle.fill")
                    .foregroundColor(.blue)
                    .padding(10)
                    .scaledToFit()
            }
        }
        .padding(.horizontal)
        .padding(.vertical, 0)
        .border(.gray)
        .cornerRadius(20)
}

struct CustomTextField: View {
    var placeholder: Text
    @Binding var text: String
    var editingChanged: (Bool) -> () = {_ in}
    var commit: () -> () = {}
    
    var body: some View {
        ZStack(alignment: .leading) {
            if text.isEmpty {
                placeholder
                    .opacity(0.5)
            }
            TextField("", text: $text, onEditingChanged: editingChanged, onCommit: commit)
        }
    }
}

我无法找到如何减少HStack的长度,以便整个圆角矩形将显示,以及增加按钮的大小,以填补更多的空间内的形状。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-08 15:33:56

您可以将overlayRoundedRectangle一起用于拐角半径的边框。我在您的CustomTextField中添加了前导填充,这样在添加overlay之后,它将看起来更合适,并且水平填充到您的HStack中。

代码语言:javascript
复制
var body: some View {
    HStack {
        CustomTextField(placeholder: Text("Enter your message"), text: $message)
            .padding(.leading, 10)
        
        
        Button {
            //messagesManager.sendMessage(message: message)
            message = ""
        } label: {
            Image(systemName: "arrow.up.circle.fill")
                .foregroundColor(.blue)
                .padding(10)
                .scaledToFit()
        }
    }
    .overlay(
        RoundedRectangle(cornerRadius: 20)
            .stroke(.gray)
    )
    .padding(.horizontal)
}

预览

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73998118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档