我在Localizable.strings文件中写了很多本地化的文本,我正在寻找一种使用这些文本并将其显示在界面生成器中的方法。也就是说,与其创建所有 View 的导出并在代码中设置文本,不如创建一个IB_DESIGNABLE UILabel子类,该子类必须访问我的Localizable.strings文件,然后直接在界面构建器上显示本地化的文本。

问题是,NSLocalizedString在接口(interface)构建器中没有给出任何结果,而仅在我实际运行代码时才给出任何结果。有没有一种方法可以告诉界面生成器用于本地化的文件(例如在prepareForInterfaceBuilder中)?

最佳答案

多亏了JRV的回答,我终于修好了这个课:

@IBDesignable class ALLocalizableLabel: UILabel {

    @IBInspectable var localizeString:String = "" {
        didSet {
            #if TARGET_INTERFACE_BUILDER
                var bundle = NSBundle(forClass: self.dynamicType)
                self.text = bundle.localizedStringForKey(self.localizeString, value:"", table: nil)
            #else
                self.text = NSLocalizedString(self.localizeString, comment:"");
            #endif
        }
    }

}

这样就可以在界面生成器中设置 key :

这将直接在界面生成器中更新标签,这很酷,默认情况下xcode应该支持!

您也可以在Github上找到它:
https://github.com/AvdLee/ALLocalizableLabel

关于objective-c - IBInspectable和NSLocalizedString,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26486123/

10-12 04:44