在iOS swift中翻译属性文本时出现问题?

时间:2018-03-26 10:42:09

标签: ios swift xcode

我有UIButton。在tableview单元格下添加UIButton。现在我想强调它。因此,如果我以编程方式创建文本,那么它将为每个将增加内存的单元格创建一个MutableAttributedString的新对象。如果从故事板创建属性字符串,那么它会翻译成另一种语言。所以请告诉我如何实现它?

代码

 let attributedString = NSMutableAttributedString(string: orignalString, attributes: attributes)
//some code
                self.labelProgress.attributedText = attributedString

2 个答案:

答案 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()
    )