首页 > 解决方案 > 在 SwiftUI 中基于容器代理设置文本字段的宽度

问题描述

所以我有一个几何代理,它包装了我制作的自定义 UITextField。文本字段的唯一问题是,如果我输入一个长字符串,文本字段的宽度会变大以适应内容大小。我认为最好的方法(我可能是错的)处理这个问题是将它包装在几何阅读器中,然后将文本字段的最大宽度设置为代理的宽度:唯一的问题是我不知道如何访问代理的宽度:

HStack {
    GeometryReader { proxy in
        TextFieldAlternate(text: self.$bindingVariable)
            .padding(.top, 10)
            .padding(.leading, 15)
            .padding(.bottom, 10)
            .cornerRadius(10)
            .frame(maxWidth: proxy.bounds.width)
    }
}.padding(.horizontal)
 .padding(.top, 65)

理想情况下,这与“TextFieldAlternate”只是一个普通的 TextField 时完全一样。我是否以正确的方式思考这个问题?因为我的逻辑是 GeometryReader 将具有与 HStack 相同的尺寸,所以如果我将文本字段的 maxWidth 设置为与 HStack 相同,它就不会变得更大,对吧?

标签: swiftproxygeometryswiftuigeometryreader

解决方案


推荐阅读