我在属性字符串上有一个项目符号列表问题。我需要一个自定义图标,它需要比文本的其余部分更大。但是,当我改变它的字体大小时,线条的高度比其余的大,这导致了相当混乱的布局。
我已经尝试过修改NSMutableParagraphStyle但没有太多运气。我应该尝试下一步的任何线索?感谢。
do {
let attrStr = try NSMutableAttributedString(data:d, options:o, documentAttributes:nil)
let stringToUpdate = attrStr.mutableString.replacingOccurrences(of: "•", with: "☞")
attrStr.mutableString.setString(stringToUpdate)
let regex = try! NSRegularExpression(pattern: "☞", options: [])
let range = NSMakeRange(0, stringToUpdate.characters.count)
let fontIcon = UIFont(name: fontName, size: fontSize + 16)! //TODO: change
regex.enumerateMatches(in: stringToUpdate, options: [], range: range, using: { (result, flags, stop) in
if let subStringRange = result?.rangeAt(0) {
attrStr.addAttribute(NSFontAttributeName, value: fontIcon , range: subStringRange)
attrStr.addAttribute(NSBaselineOffsetAttributeName, value: -8, range: subStringRange)
}
})
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.addTabStop(NSTextTab(textAlignment: .left, location: 1.0, options: [:]))
paragraphStyle.firstLineHeadIndent = 0
paragraphStyle.headIndent = 56;
paragraphStyle.defaultTabInterval = 2.0
paragraphStyle.minimumLineHeight = 1
paragraphStyle.maximumLineHeight = 1
paragraphStyle.lineHeightMultiple = 1
paragraphStyle.lineSpacing = 10
paragraphStyle.paragraphSpacing = 40
paragraphStyle.paragraphSpacingBefore = 10
attrStr.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: NSMakeRange(0, stringToUpdate.characters.count))
return attrStr
}
答案 0 :(得分:0)
据我所知,你无法单独使用NSAttributedString
这样做,所以...偶然选择:
1 - 根据您的图片,看起来就像使用表格视图 ,或可以使用表格视图。如果你走这条路线,在图像视图中使用“项目符号点”和标签中的文本布置单元格非常简单。
2 - 看一下这篇文章:https://stackoverflow.com/a/14639864/6257435 - 类似于你想要做的事情,除了它使用你想要使用图像的“drop-cap”。同样的想法,可能是非常相似的代码来实现图像子弹点。