我有UIButton
。在tableview单元格下添加UIButton
。现在我想强调它。因此,如果我以编程方式创建文本,那么它将为每个将增加内存的单元格创建一个MutableAttributedString
的新对象。如果从故事板创建属性字符串,那么它会翻译成另一种语言。所以请告诉我如何实现它?
代码
let attributedString = NSMutableAttributedString(string: orignalString, attributes: attributes)
//some code
self.labelProgress.attributedText = attributedString
答案 0 :(得分:1)
尝试在属性检查器中更改字体菜单中的文本样式,或者即使您想要更改字体本身也是如此。但是你的细胞不应该增加你的记忆力。您的代码中必定存在故障。是否可以在问题中发布您的代码?
答案 1 :(得分:0)
使字符串加下划线的唯一方法是使用属性字符串。因此,如果您有包含此类字符串的表格单元格,则必须在更改表格单元格时创建新的属性字符串。即使是故事板也必须为每次更新创建新的属性字符串。但我不知道这会如何导致显着的内存使用。
无论如何,如果你想本地化属性字符串,你必须以编程方式自己完成。一般来说,我更喜欢这种方法用于所有UI元素,因为它为您提供了更多控制。您可以使用以下扩展名简化整个过程:
extension String {
var localized: String {
return NSLocalizedString(self, comment: "")
}
}
然后,您可以将翻译定义为全局常量,如:
class Texts {
class MyViewController {
static let buttonTitle = "Edit".localized
}
}
并设置按钮的文字:
self.button.setAttributedTitle(
NSMutableAttributedString(string: Texts.MyViewController.buttonTitle,
attributes: [NSUnderlineStyleAttributeName: NSUnderlineStyle.styleSingle.rawValue]),
for: UIControlState()
)