Objective C 扩展中使用 IBInspectable setter 的 StoryBoard 本地化
StoryBoard Localization with IBInspectable setter in Objective C Extensions
根据 this blog post,您可以在 swift 中使用 IBInspectable 扩展来本地化故事板。我们可以单独依赖 Localizable.strings 文件,而不是拥有本地化的故事板和担心字符串的多个文件。
所以我的问题是如何实现与 objective c 相同的效果?如果答案不可能,那么将所有 UI 面向字符串保存在一个文件中并获取它的最佳方法是什么。
您知道您可以像在 Swift 中一样使用 Objective-C 中的这些扩展名吗?
无论如何,要在 Objective-C 中做同样的事情,您只需创建具有 IBInspectable 属性的类别。
@interface UILabel(LocalizationUtils)
@property (nonatomic, weak) IBInspectable NSString *localizedText;
@end
@implementation UILabel(LocalizationUtils)
- (void)setLocalizedText:(NSString*)localizedText {
self.text = NSLocalizedString(localizedText, @"");
}
- (NSString*)localizedText {
return @"";
}
@end
根据 this blog post,您可以在 swift 中使用 IBInspectable 扩展来本地化故事板。我们可以单独依赖 Localizable.strings 文件,而不是拥有本地化的故事板和担心字符串的多个文件。
所以我的问题是如何实现与 objective c 相同的效果?如果答案不可能,那么将所有 UI 面向字符串保存在一个文件中并获取它的最佳方法是什么。
您知道您可以像在 Swift 中一样使用 Objective-C 中的这些扩展名吗? 无论如何,要在 Objective-C 中做同样的事情,您只需创建具有 IBInspectable 属性的类别。
@interface UILabel(LocalizationUtils)
@property (nonatomic, weak) IBInspectable NSString *localizedText;
@end
@implementation UILabel(LocalizationUtils)
- (void)setLocalizedText:(NSString*)localizedText {
self.text = NSLocalizedString(localizedText, @"");
}
- (NSString*)localizedText {
return @"";
}
@end