相关疑难解决方法(0)

如何在没有固定宽度的情况下让文本包裹在 UILabel(通过 UIViewRepresentable)中?

将 lineBreakMode 设置为 byWordWrapping 并将 numberOfLines 设置为 0 似乎还不够:

struct MyTextView: UIViewRepresentable {
    func makeUIView(context: Context) -> UILabel {
        let label = UILabel()
        label.lineBreakMode = .byWordWrapping
        label.numberOfLines = 0
        label.text = "Here's a lot of text for you to display. It won't fit on the screen."
        return label
    }

    func updateUIView(_ view: UILabel, context: Context) {
    }
}

struct MyTextView_Previews: PreviewProvider {
    static var previews: some View {
        MyTextView()
            .previewLayout(.fixed(width: 300, height: 200))
    }
}
Run Code Online (Sandbox Code Playgroud)

无论我对 lineBreakMode 使用哪种设置,文本都不会换行。画布预览和实时预览都如下所示:

文本未换行的屏幕截图

我得到的最接近的是设置 preferredMaxLayoutWidth,这确实会导致文本换行,但似乎没有一个值表示“无论视图大小如何”。

uilabel swift swiftui

14
推荐指数
2
解决办法
4658
查看次数

SwiftUI登录页面布局

我正在尝试建立登录视图时正在探索SwiftUI,现在我遇到了问题

这是我要实现的目标:

我已经取得的成就

如您所见,我已经达到了这一点,但是我不喜欢我的实现

struct ContentView : View {
@State var username: String = ""
var body: some View {
    VStack(alignment: .leading) {
        Text("Login")
            .font(.title)
            .multilineTextAlignment(.center)
            .lineLimit(nil)
            Text("Please")
                .font(.subheadline)

        HStack {
            VStack (alignment: .leading, spacing: 20) {
                Text("Username: ")
                Text("Password: ")

            }
            VStack {
                TextField($username, placeholder: Text("type something here..."))
                .textFieldStyle(.roundedBorder)
                TextField($username, placeholder: Text("type something here..."))
                    .textFieldStyle(.roundedBorder)
                }
            }
        }.padding()
    }
}
Run Code Online (Sandbox Code Playgroud)

因为为了使在文本框的中间正好对准用户名和密码的文本,我不得不把字面间距值20VStack,我不喜欢,因为最有可能它不会在不同的设备尺寸的工作。

有人看到一种更好的方法来达到相同的结果吗?

谢谢

ios swift swiftui swift5.1

2
推荐指数
2
解决办法
1277
查看次数

标签 统计

swift ×2

swiftui ×2

ios ×1

swift5.1 ×1

uilabel ×1