我在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/