说我有一个NSMutableAttributedString
。
在整个字符串中,字符串具有 多种 __格式 组合 :
这是一个例子:
这个字符串 在iOS中 很难 改变* , 真的 很烂 。 *
但是,字体本身不是您想要的字体。
我想要:
对于每个字符,将该字符更改为特定 字体 (例如Avenir)
对于每一个角色, 保持 了 组合 的 其他 这是以前对这个角色的地方归因(粗体,斜体,颜色,等等等等)。
你到底是怎么做到的?
注意:
如果您在整个范围内微不足道地添加属性“ Avenir”:它只是 删除了所有其他属性范围 ,则会丢失所有格式。不幸的是,属性 实际上不是
“加法”的。
由于rmaddy的答案对我f.fontDescriptor.withFace(font.fontName)
不起作用(不保留粗体之类的特征),因此这是Swift
4的更新版本,其中还包括颜色更新:
extension NSMutableAttributedString {
func setFontFace(font: UIFont, color: UIColor? = nil) {
beginEditing()
self.enumerateAttribute(
.font,
in: NSRange(location: 0, length: self.length)
) { (value, range, stop) in
if let f = value as? UIFont,
let newFontDescriptor = f.fontDescriptor
.withFamily(font.familyName)
.withSymbolicTraits(f.fontDescriptor.symbolicTraits) {
let newFont = UIFont(
descriptor: newFontDescriptor,
size: font.pointSize
)
removeAttribute(.font, range: range)
addAttribute(.font, value: newFont, range: range)
if let color = color {
removeAttribute(
.foregroundColor,
range: range
)
addAttribute(
.foregroundColor,
value: color,
range: range
)
}
}
}
endEditing()
}
}
的问题f.fontDescriptor.withFace(font.fontName)
是,它消除了象征性的特质一样italic
,bold
或者compressed
,因为它会因为某些原因忽略那些与字型的默认特征。为什么这是如此令我难以理解,甚至可能是苹果的疏忽。或“不是错误,而是功能”,因为我们免费获得了新字体的特征。
因此,我们要做的是创建一个字体描述符,该描述符具有原始字体的字体描述符中的符号特征.withSymbolicTraits(f.fontDescriptor.symbolicTraits)
。为rmaddy支持我迭代的初始代码。
我已经在生产应用程序中交付了它,我们在其中通过解析HTML字符串NSAttributedString.DocumentType.html
,然后通过上述扩展名更改字体和颜色。到目前为止没有问题。
问题内容: 我正在使用hibernate作为持久层。存在于同一表中的2个实体通过单表继承策略扩展了一个超类。 我有一个ID为4的B实例。如何将此实例的类型更改为C并保留其ID(4)? 上面的代码因 有可能吗? 问题答案: Hibernate尝试使持久性尽可能地透明-这意味着它尝试遵循与普通Java对象相同的原则。现在,用Java改写您的问题,您将获得: 如何将B类的实例转换为(不兼容的)C类的实例
问题内容: 我通常将文字设置为粗体(或斜体或其他字体属性) 如何仅删除粗体属性,而不更改到目前为止可能已设置的其他属性? 问题答案: 这会将样式设置为正常,而不会更改颜色或大小。 但是您不能以这种方式混合使用粗体/斜体/下划线文本。如果指定粗体,则所有文本均将为粗体。如果要混合文本样式,建议使用HTML设置文本样式,然后使用以下代码。
问题内容: 我打算在微调器中将文本字体更改为arialbold。以下是我的代码:- 问题答案: 类: 版面: my_spinner_style.xml TTF文件
我需要使用boto3更新我的Dynamodb表中的时间戳属性,但是属性名称“时间戳”是一个保留字,所以它在SET命令上抛出一个错误。 “errorMessage”:“调用UpdateItem操作时发生错误(ValidationException):无效的UpdateExpression:属性名称是保留关键字;保留关键字:时间戳”,
本文向大家介绍iOS更改字体,包括了iOS更改字体的使用技巧和注意事项,需要的朋友参考一下 示例 Swift Objective-C
使用DOM PDF创建一些报告,但是我唯一遇到的问题是设置无衬线字体。 我尝试了几乎所有的方法来设置CSS中可能的字体,但它总是以衬线字体呈现。 我并没有试图呈现一个自定义字体,只是一些简单的东西,比如helvetica或arial。 有没有其他人有过这个问题,或者知道为什么它可能会默认为衬线? 注意:应用程序在CodeIgnitor上运行。