ios - 如何在 SwiftUI 中动态计算字符串的宽度
问题描述
假设我有一个名为: 的文本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#>)
}
}
解决方案
这个扩展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))
推荐阅读
- eigen - 具有特征的惯性张量的主轴形式
- dart - 从从 JSON 文件解析的另一个列表列表中构建对象列表
- javascript - AWS 客户端网关 API 问题
- windows - 命令提示符关闭后 SQLite3 拒绝停留在 PATH 中
- swift - 在 UIImageView 之上的 Swift 上将蒙版层作为 UIImage 获取
- typescript - 使用 Function.prototype.bind 时类型谓词丢失
- firemonkey - 无法使用 Firemonkey 在 C++ Builder/Delphi 的编辑组件中键入 TAB
- c# - 对数组使用 asp-route-{variable} 标签助手
- python - dplyr R排列功能等效于熊猫
- c# - 如何使用 Moq 模拟 HttpRequestMessage