【问题标题】:SwiftUI Text justified alignmentSwiftUI 文本对齐对齐
【发布时间】:2020-05-23 02:05:10
【问题描述】:

有没有人找到一种方法以合理的方式对齐Text 中的字符串?

在我的阅读应用程序中,我想为用户提供选择合理的对齐方式,其中 .leading.trailing 对齐方式同时为真。不幸的是,Text.multilineTextAlignment 修饰符只有三个选项:.leading.center.trailing

如果不是,我仍然可以将UILabel 包装成UIViewRepresentable,因为UILabel 具有.justified 对齐选项,但我认为它也应该在Text 中可用,但我无法找到它。

【问题讨论】:

  • 这个运气好吗?

标签: text swiftui text-alignment


【解决方案1】:

我知道我迟到了,但我遇到了同样的问题,我会写在这里,它可以帮助其他开发人员将来

不幸的是,直到现在 Apple 还不支持 SwiftUI 2.0 中的 .justified

你需要依赖 UIKit

在您的项目中添加此代码

   struct LabelAlignment: UIViewRepresentable {
    var text: String
    var textAlignmentStyle : TextAlignmentStyle
    var width: CGFloat

    func makeUIView(context: Context) -> UILabel {
        let label = UILabel()
        label.textAlignment = NSTextAlignment(rawValue: textAlignmentStyle.rawValue)!
        label.numberOfLines = 0
        label.preferredMaxLayoutWidth = width
        label.setContentHuggingPriority(.required, for: .horizontal)
        label.setContentHuggingPriority(.required, for: .vertical)

        return label
    }

    func updateUIView(_ uiView: UILabel, context: Context) {
        uiView.text = text
    }
}

enum TextAlignmentStyle : Int{
     case left = 0 ,center = 1 , right = 2 ,justified = 3 ,natural = 4
}

那就这样用吧

LabelAlignment(text: "Your text here", textAlignmentStyle: .justified, width: UIScreen.main.bounds.width - 20)

将 20 更改为您喜欢的任何数字,以便在左右添加空格

我的解决方案将取决于文本内容的大小 如果文本很小,则视图会很小,反之亦然 所以它将充当 Text()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 2015-02-12
    • 2017-02-17
    相关资源
    最近更新 更多