动态确定字符串宽度的字符串扩展?

问题描述 投票:0回答:1

我在名为

text
的变量中有一个字符串。 我想计算出这个
text
的宽度,以便我可以为另一个视图的框架分配宽度。我该怎么办?

struct BadgeTextView: View {

var text: String

var body: some View {
    Rectangle()
        .fill(Color.red)
    .cornerRadius(3)
        .frame(width: text.???, height: <#T##CGFloat?#>, alignment: <#T##Alignment#>)
        
}
}  
swiftui uikit
1个回答
32
投票

String
的扩展应该建立在 Sweeper 的建议之上,让您在给定某种字体的情况下获得
String
的宽度:

extension String {
   func widthOfString(usingFont font: UIFont) -> CGFloat {
        let fontAttributes = [NSAttributedString.Key.font: font]
        let size = self.size(withAttributes: fontAttributes)
        return size.width
    }
}

这将像这样使用:

let width = "SomeString".widthOfString(usingFont: UIFont.systemFont(ofSize: 17, weight: .bold))

© www.soinside.com 2019 - 2024. All rights reserved.