How to figure out the width of a string dynamically in SwiftUI

こ雲淡風輕ζ 提交于 2020-12-12 11:14:58

问题


Let's say I have a text called: This. I want to figure out the width of the text called This so that I can assign a width to another view's frame. How do I go about it?

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#>)

}
}  

回答1:


This extension to String should build on Sweeper's suggestion to let you get the width of a String given a certain font:

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

This would be used like so: let width = "SomeString".widthOfString(usingFont: UIFont.systemFont(ofSize: 17, weight: .bold))



来源:https://stackoverflow.com/questions/58782245/how-to-figure-out-the-width-of-a-string-dynamically-in-swiftui

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!