Как динамически определить ширину строки в SwiftUI - PullRequest
0 голосов
/ 09 ноября 2019

Допустим, у меня есть текст с именем: This. Я хочу выяснить ширину текста с именем This, чтобы я мог назначить ширину рамке другого вида. Как мне это сделать?

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 Ответ

1 голос
/ 09 ноября 2019

Это расширение 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))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...