JRV*_*JRV 8 objective-c interface-builder xcode6
我在Localizable.strings文件中编写了很多本地化文本,我正在寻找一种方法来使用它们并在界面构建器中显示它们.也就是说,不是为我的所有视图创建出口并在代码中设置文本,我想创建一个IB_DESIGNABLEUILabel子类,它必须访问我的Localizable.strings文件,然后直接在界面构建器上显示本地化文本.
问题是,NSLocalizedString在接口构建器中没有给出任何结果,但仅在我实际运行代码时.有没有办法告诉界面构建器用于本地化的文件(例如在prepareForInterfaceBuilder中)?
Ant*_*ine 12
感谢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
}
}
}
Run Code Online (Sandbox Code Playgroud)
这样就可以在界面构建器中设置键:

这将直接在界面构建器中更新标签,非常酷,默认情况下xcode应该支持!
您也可以在Github上找到它:https: //github.com/AvdLee/ALLocalizableLabel
我终于弄明白了.答案是:用于[[NSBundle bundleForClass:self.class] localizedStringForKey:key value:@"" table:nil]从界面构建器中的Localizable.strings文件获取翻译.这种实现使我可以重新定义NSLocalizedString宏(仅用于界面构建器):
#if TARGET_INTERFACE_BUILDER
#undef NSLocalizedString
#define NSLocalizedString(key, comment) [[NSBundle bundleForClass:self.class] localizedStringForKey:key value:@"" table:nil]
#endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2123 次 |
| 最近记录: |