ios - 在 Swift 中,我如何知道单词是否包含在 UILabel 中
问题描述
在 Swift 中,我想知道是否有办法获得一个单词是否被换行。例如,我有一个 UILabel。
let label = UILabel()
label.text = "Hey! Hello World!"
label.areWordsWrapped()
如果文本显示如下:
Hey! Hell
o World!
//label.areWordsWrapped() should return true
如果这:
Hey! Hello
World!
//label.areWordsWrapped() should return false
是否有实现此目的的功能或属性?
解决方案
你可以试试这个,可能不完美
extension UILabel {
func areWordsWrapped()->Bool {
let fontAttributes: [NSAttributedString.Key : Any] = [NSAttributedString.Key.font: self.font!]
let splitText: [String] = self.text!.split {$0 == " "}.map(String.init)
for text in splitText {
let width = text.size(withAttributes: fontAttributes).width
if width > self.frame.width {
return true
}
}
return false
}
}
编辑:
如果您使用字符换行,我认为几乎可以肯定它将被换行,因为几乎不可能在没有输入/换行的情况下在每一行中具有相同的宽度
推荐阅读
- java - 使用 jmeter-plugins-webdriver 和 java 代码,有没有 ExpectedConditions 的 NoClassDefFoundError?
- reactjs - 带有 pug.js 的 Ionic React Typescript,使用 tsx 但不使用 jsx 时出现“未捕获的 ReferenceError:React 未定义”
- java - 本地化 JFileChooser.SAVE_DIALOG“保存在:”标签
- python - 2d 与 3d numpy 数组的和乘积加上标量计算
- struct - 为什么我在帕斯卡中使用记录“结构”时会跳过?
- python - 我怎样才能在python中输入只接受大写字母和数字
- wicket - 更新到 Wicket 9 后单击 DataGrid 表时出现 JavaScript 错误
- javascript - ES6 模板文字:如何添加条件多行并删除额外的缩进?
- ruby - 如何在保留原始上下文的同时将产量与重试循环结合起来?
- python - 如何使用移位在时间戳两行之间进行减法 - Pandas Python